Aircraft to ground data systems and computing methods

ABSTRACT

A computing method for exchanging data between an aircraft computing device on an aircraft and a ground computing device, comprises receiving, by the ground computing device, a data transmission from an aircraft interface computing device located remotely from the ground computing device, the data transmission indicating that a data file is to be exchanged between the ground computing device and the aircraft computing device in communication with the aircraft interface computing device; and exchanging the data file between a central storage location associated with the ground computing device and the aircraft computing device utilizing an aircraft API executing on the aircraft interface computing device, wherein the aircraft API is one of a plurality of aircraft APIs stored on the aircraft interface computing device, and wherein each of the plurality of aircraft APIs are configured for communicating with unique aircraft services executing on unique aircraft computing devices.

RELATED APPLICATION

This application claims priority to India Patent Application No.201911033157 entitled AIRCRAFT TO GROUND DATA SYSTEMS AND COMPUTINGMETHODS, which was filed on Aug. 16, 2019, and the complete disclosureof which is hereby incorporated by reference.

FIELD

The present disclosure relates to network systems for facilitatingair-to-ground data communication with aircraft computing devices.

BACKGROUND

Aircraft computing devices are an important component of today'saircraft, as are the software modules operating on aircraft computingdevices to enable them to communicate with other computing systems.Additionally, as computing technology has evolved, the complexity ofaircraft computing devices available to be integrated into new aircraft,as well as the corresponding software written to operate thereon, havealso increased. However, because aircraft software is expensive tocreate and maintain due to the rigorous requirements of flightcertifications and must be calibrated against numerous security andsafety concerns, once an aircraft is deployed with a functionalcomputing system and corresponding software, the original computingsystem generally remains onboard the aircraft for the life of theaircraft. This means that entities that interact with aircraft computingdevices onboard aircraft must currently exchange data with the manydifferent types of computing systems and corresponding software moduleswhich are utilized by today's aircraft. Since there are no common groundsoftware interfaces for ground clients to communicate with multipleaircraft computing devices and/or software modules, each ground clientmust currently employ multiple software communication interfacesindividually written for a corresponding type of computing system and/orsoftware module.

Additionally, the availability and reliability of uplink and downlinkcommunication systems for air-to-ground communication with aircraftvaries across different geographic regions. This means that during airtravel, the ability of ground-based entities to communicate withaircraft computing devices can be very unreliable. This results indropped data transfers, missed transmissions, and other data transferissues.

SUMMARY

Computing methods and computing systems for exchanging data filesbetween aircraft computing devices and ground computing devices aredisclosed.

Some methods comprise receiving, by an aircraft API executing on anaircraft interface computing device, an initial communication from anaircraft service executing on an aircraft computing device locatedonboard an aircraft; determining, by the aircraft API, that a data fileis to be transmitted from the ground computing device to the aircraftcomputing device; transmitting, to the ground computing device, a datasignal configured to cause the data file to be transmitted from theground computing device to a transient storage location associated withthe aircraft interface computing device; and causing the data file to betransmitted from the transient storage location to the aircraftcomputing device.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is schematic drawing of an example environment that illustratestechniques for exchanging data files between aircraft computing devicesand a ground computing device.

FIG. 2 is a schematic representation of a remote aircraft interfacecomputing device for exchanging data files between aircraft computingdevices and a ground computing device.

FIG. 3 is a schematic representation of ground computing device(s) forexchanging data files between aircraft computing devices and the groundcomputing device(s).

FIG. 4 is a flowchart depicting methods for exchanging data filesbetween aircraft computing devices and a ground computing device.

FIG. 5 is a flowchart depicting methods for exchanging data filesbetween a plurality of aircraft computing devices and a ground computingdevice.

FIG. 6 is a flowchart depicting methods for transmitting data files froman aircraft computing device to a ground computing device.

FIG. 7 is a flowchart depicting methods for transmitting data files toan aircraft computing device and from a ground computing device.

FIG. 8 is a flowchart depicting methods for generating and maintaining acommand queue for exchanging data files between an aircraft computingdevice and a ground computing device.

DESCRIPTION

The present disclosure describes techniques for exchanging data filesbetween aircraft computing devices and a ground computing device. Byutilizing these techniques, external ground-based computing devices areable to use a single interface to communicate and exchange data fileswith many different types of legacy aircraft computing devices. Thedisclosed techniques employ a set of decoupled interfaces to provideaccess points for communicating with multiple types of aircraftcomputing devices. Additionally, as will be discussed further below, thetechniques described herein utilize cloud network resources to moreefficiently exchange data files between aircraft computing devices inflight and a ground computing device. Not only does this improve thereliability of such data exchanges, but it also more efficiently usesnetwork resources.

FIGS. 1-8 illustrate examples of computing systems, network-connectedcomputing devices, and methods for exchanging data files betweenaircraft computing devices and a ground computing device. In general, inthe drawings, elements that are likely to be included in a givenexamples are illustrated in solid lines, while elements that areoptional or alternatives are illustrated in dashed lines. However,elements that are illustrated in solid lines are not essential to allexamples of the present disclosure, and an element shown in solid linesmay be omitted from a particular example without departing from thescope of the present disclosure. Elements that serve a similar, or atleast substantially similar, purpose are labelled with numbersconsistent among the figures. Like numbers in each of the figures, andthe corresponding elements, may not be discussed in detail herein withreference to each of the figures. Similarly, all elements may not belabelled or shown in each of the figures, but reference numeralsassociated therewith may be used for consistency. Elements, components,and/or features that are discussed with reference to one or more of thefigures may be included in and/or utilized with any of the figureswithout departing from the scope of the present disclosure.

FIG. 1 is schematic drawing of example environments 100 that illustratetechniques for exchanging data files between aircraft computing devicesand a ground computing device. Additional details of individualoperations illustrated in FIG. 1 and discussed below are described inmore detail with reference to subsequent figures.

The environment 100 includes one or more network-connected groundcomputing devices 102 that exchanges data files 104 with one or moreaircraft computing devices 106 operating on aircraft 108, other aircraftcomputing devices 110 operating on other aircraft 112, or both. In someexamples, the ground computing device 102 operates electronicdistribution software that enables data files to be exchanged betweenthe ground computing device 102 and aircraft computing devices 106and/or other aircraft computing devices 110. In some examples, datafiles 104 include one or more of a software module, a software update, aflight plan, an entertainment file, an alert, a message, a security log,a performance log, health monitoring data, a system log, or other dataconstruct that is associated with the performance and/or operation of acorresponding aircraft 108 or 112. As used herein, aircraft 112 also maybe referred to as aircraft 108 and aircraft computing device 110 may bereferred to as aircraft computing device 106, with aircraft 108 andaircraft computing device 106 being used generally when referring to asingle aircraft and its corresponding one or more aircraft computingdevices.

In various embodiments according to the present disclosure, the groundcomputing device 102 may include many different types of electronicdevices, including, but not limited to, a personal computer, a laptopcomputer, a server, a cloud-based device or devices, and so forth. Insome embodiments, the ground computing device 102 is associated with anentity that engages in the transmission of data files with aircraft 108in flight, such as an airline, an aircraft manufacturer, a communicationservice provider, a regulation agency, an air traffic control body, etc.

In some embodiments, the ground computing device 102 hosts and/orprovides one or more ground-based programmatic services. As illustrated,ground computing device 102 hosts ground application programminginterfaces (APIs) 103 that permit third party computing devices 114 tointeract with ground computing device 102, and as a result ultimatelywith aircraft 108 and other aircraft 112. In addition, in some examples,the ground computing device 102 includes ground-based service modulesthat acquire, manipulate, and/or evaluate data files 104 from aircraftcomputing devices 106. For example, in some examples, the groundcomputing device 102 hosts a software suite that provides a messagingservice, a video stream service, monitoring of aircraft part interface,an aircraft sensor monitoring, a connectivity interface, a navigationassistance service, or other ground-based service that allows the groundcomputing device 102 to transmit data with an aircraft and/or a fleet ofaircraft. In various embodiments, the ground computing device 102provides a plurality of services that each operate by transmitting datafiles 104 between the ground computing device 102 and one or moreaircraft computing devices 106. For example, in various embodiments asoftware-based service executing on a ground computing device 102provides executable instructions to push entertainment files and/orflight plans to an aircraft operated by an airline.

In other examples, the ground computing device 102 is associated with aservice provider, such as an aircraft manufacturer that provides thirdparties, such as airlines, with communication infrastructure forcommunicating with aircraft in flight. In an example embodiment, anaircraft manufacturer and/or aircraft component manufacturer provides aground-based software service that uses the ability of the groundcomputing device 102 to communicate with aircraft computing devices 106to pull system health information gathered by sensors on aircraft 108and/or 112, and/or to push software updates to electronic systems withinaircraft 108 and/or 112. Alternatively or in addition, a serviceprovider uses the ground computing device 102 to acquire performancedata about one or more aircraft 108 and/or the components on theaircraft while the aircraft is in flight, and then push some or all theperformance data to a third party airline. For example, in someembodiments where the ground computing device 102 exchanges data withaircraft operated by different airlines, the ground computing device 102segregates the data from an individual aircraft 108 according to thecorresponding airline that operates the individual aircraft 108, and/ortransmits some or all of the data to the corresponding airline. In thisway, the ground computing device 102 enables multiple airlines tosimultaneously exchange data with aircraft in its fleet.

As shown in FIG. 1, the ground computing device 102 is connected to oneor more of third party computing devices 114, remote aircraft interfacecomputing devices 116, other remote aircraft interface computing devices118, local storage locations 120, and transient storage locations 122via network 124. In various embodiments, network 124 is a wired network,a wireless network, or a combination of both. Examples of network 124include the internet, a wide area network, a local area network, or acombination thereof. Network 124 also may be referred to herein asground network 124, and in some examples, the network 124 includes acloud computing network 126.

In some embodiments, the third party computing devices 114 areassociated with another entity that is different from the entityassociated with the ground computing device 102. For example, where theground computing device 102 are operated by a communication serviceprovider, the third party computing devices 114 include devices that areassociated with airlines that engage the communication service providerto enable data transmission with their aircraft fleet.

As further illustrated in FIG. 1, environment 100 includes an aircraftinterface computing device 116 and other aircraft interface computingdevices 118 in communication with ground computing device 102 overnetwork 124. Each of the aircraft interface computing devices 116, 118executes aircraft APIs that enables data files to be exchanged betweenthe ground computing device 102 and aircraft computing devices 106and/or other aircraft computing devices 110. In various embodimentsaccording to the present disclosure, the aircraft interface computingdevices 116 may include many different types of electronic devices,including, but not limited to, server devices. In some examples, theindividual ones of aircraft interface computing devices 116 include acomputing resource of a cloud server, a dedicated server, or acombination thereof. In some examples, the aircraft interface computingdevices 116 are cloud server resources operating within cloud computingnetwork 126, such as transient routers. As used herein, aircraftinterface computing device 118 also may be referred to as aircraftinterface computing device 116, with aircraft interface computing device116 being used generally when referring to a single aircraft interfacecomputing device 116.

The aircraft interface computing devices 116 are geographicallydistributed across multiple geographic regions. A geographic regioncorresponds to a threshold distance, a coverage area, a geopoliticalboundary, or other geographic zones. For example, individual aircraftinterface computing devices 116 are geographically positioned so as tobe remote from one another and/or the ground computing device 102 (e.g.,located in a geographically separate server farm).

As further shown in FIG. 1, the aircraft interface computing device 116also is in communication with aircraft 108 and other aircraft 112 overan air-to-ground network 128. In some embodiments, the air-to-groundnetwork 128 includes one or more networks for facilitating air-to-grounddata exchanges between airborne aircraft computing devices 106 andground-based aircraft interface computing devices 116. For example, insome embodiments, the air-to-ground network 128 includes one or more ofa wireless network, a satellite network, a cellular network, or acombination thereof.

Aircraft 108 and 112 are shown in FIG. 1 as commercial airplanes.However, in various embodiments, aircraft 108 and 112 can include any ofpersonal aircraft, military aircraft, private airplanes, rotorcraft,spacecraft, or other types of aircraft having aircraft computing devices106 operating thereon. Aircraft computing device 106 can include manydifferent types of electronic devices, including, but not limited to, apersonal computer, a laptop computer, a server, and an onboard computerinfrastructure, located on and/or otherwise incorporated into individualaircraft 108 and 112. The aircraft computing devices 106 provide one ormore functionalities for the aircraft, such as entertainment, operationsupport, navigation support, aircraft component operation, datasecurity, health and safety monitoring, etc. In some examples, theaircraft computing devices 106 obtain operational and/or health datafrom sensors associated with one or more components of the aircraft 108.In some embodiments, the aircraft computing devices 106 provide pilotsof the aircraft 108 and/or 112 with flight plan information, navigationassistance, and/or full/partial autopilot functionality.

As shown in FIG. 1, an aircraft service 130 is stored on aircraft memory132 associated with each of the aircraft computing devices 106 and theother aircraft computing devices 110. The aircraft memory 132 is acomponent memory of the corresponding aircraft computing device 106, oran external memory storage that is separate from the correspondingaircraft computing device 106. In some embodiments, the aircraft memory132 also stores data files 104. The aircraft service 130 is a softwaremodule that is executable to cause the corresponding aircraft computingdevice 106 or 110 to interface with external computing devices, such asthe ground computing devices 102, aircraft interface computing devices116, transient storage locations 122, or other computing devices.

In some embodiments, there are multiple versions of aircraft services130 executing on the aircraft computing devices 106 that can interfacewith a specific aircraft API. That is, different aircraft computingdevices 106 have different software modules that are individuallyexecutable to cause its corresponding aircraft computing device 106 tointeract with an aircraft interface computing device 116. For example,aircraft 108 includes a first aircraft computing device 106 that uses afirst aircraft service 130 to communicate with external computingdevices, while a particular other aircraft 112 includes another aircraftcomputing device 110 that uses a second aircraft service 130 that isdifferent from the first aircraft service 130 to communicate withexternal computing devices. The different versions of aircraft services130 correspond to different software modules programmed to perform ondifferent types of computing devices, programmed in different languages,created by different programming entities, programmed to operate withindifferent operating systems and/or with different versions of asoftware, etc.

In some examples, the aircraft service 130 is executable to cause thecorresponding aircraft computing device 106 to transmit an initialcommunication 134 to one or more computing devices such as the groundcomputing device 102, the aircraft interface computing devices 116, thetransient storage locations 122, or other computing devices. In someembodiments, transmitting the initial communication 134 includesestablishing a secure connection between the aircraft computing device106 or 110 and the external computing device. The initial communication134 is be transmitted over the air-to-ground network 128.

In some embodiments, the initial communication 134 includes one or moreidentifiers that are associated with the corresponding aircraft,aircraft computing device, aircraft API, or a combination thereof. Insome examples, the initial communication 134 includes one or more of anairline identifier (e.g., an international civil aviation organization(ICAO) code or an international air transport association (IATA) code,etc.), an airplane identifier (e.g., a tail number, a registrationnumber, a manufacturer number, a serial number, etc.), and a softwareidentifier. In addition, the initial communication 134 also can includea command. A command is a software-based instruction that identifies anaction and/or data transfer that is to occur between the groundcomputing devices 102 and one or more aircraft computing devices 106. Anexample command corresponds to a request to exchange a data file 104between the ground computing device 102 and the aircraft computingdevice 106.

In some examples, the aircraft service 130 is executable to cause thecorresponding aircraft computing device 106 to transmit the initialcommunication 134 periodically, according to a schedule, and/or based ona trigger event, such as an input from a user associated with theaircraft (e.g., pilot, passenger, steward, etc.), a data file 104 beinggenerated, a data file 104 reaching a preset size, an available amountof the aircraft memory 132 reaching or dropping below a threshold,occurrence of a preset event (e.g., reaching a preset altitude, reachinga preset location, the aircraft being airborne for a preset amount oftime, etc.), or reception of a transmission from an external computingdevice, such as the ground computing device 102, the aircraft interfacecomputing device 116, the transient storage locations 122, or othercomputing devices.

Accordingly, because of the wide number of aircraft services 130deployed, entities that interact with aircraft computing devices onboardaircraft, such as airline manufacturers and airlines, must have multipleaircraft APIs for communicating with different types of aircraftcomputing devices, or be limited to only communicating with aircraftcomputing devices having a particular type of aircraft computing device.This makes it difficult for aircraft manufacturers and airlines tocommunicate broadly across their entire fleet. Not only must suchaircraft manufacturers and airlines employ a plurality of aircraft APIsthat allow their computing devices to communicate with each of aplurality of aircraft services 130 used by the aircraft computingdevices 106 deployed on the aircraft within their fleet, but also eachof their software protocols that are written to facilitate and/orutilize data exchange between aircraft computing devices must be writtensuch that it cannot interface with each deployed aircraft service 130.Not only does this make the coding prohibitively complex, but it alsorequires each software protocol to be updated each time a new aircraftservice 130 is deployed onto an aircraft computing device 106 and/or110.

The techniques of the present disclosure address these issues byutilizing a system of decoupled interfaces to conduct communication anddata exchanges between a ground computing device 102 and an aircraftcomputing device 106. For example, FIG. 1 shows each of the aircraftinterface computing devices 116 storing aircraft APIs 136. The aircraftAPIs 136 are software modules that are executable to cause thecorresponding aircraft interface computing devices 116 to facilitate theexchange of data files 104 between the ground computing devices 102 andthe aircraft computing devices 106.

In some embodiments, in response to receiving the initial communication134, an aircraft interface computing device 116 is configured todetermine an aircraft classifier associated with at least one of theaircraft, the aircraft computing device, the aircraft service, or acombination thereof, from which the initial communication 134originated. An aircraft classifier corresponds to one or more of a typeof the aircraft, a year of the aircraft, a model of the aircraft, anairline associated with the aircraft, a type of computing device onwhich the aircraft service is executing, a type of application to whichthe aircraft service corresponds, or a combination thereof. In someembodiments, the aircraft interface computing device determines theaircraft classifier based on one or more aircraft identifiers includedin the initial communication 134. For example, based on the initialcommunication 134 including a tail number from the originating aircraft,the aircraft interface computing device 116 can access a data lookuptable that identifies relationships between aircraft tail numbers andthe corresponding type of aircraft computing device and/or aircraftservice. In various embodiments, such a data construct is stored on oneor more storage locations within cloud computing network 126, aircraftinterface computing device 116, or both. Alternatively, the aircraftinterface computing device 116 transmits the aircraft identifier and/orthe aircraft classifier to the ground computing device 102, the groundcomputing device 102 accesses a data lookup table that identifiesrelationships between aircraft identifiers and/or aircraft classifiersand corresponding aircraft computing devices, aircraft services, and/oraircraft types, and transmits the type of aircraft computing device,aircraft service, and/or aircraft from which the initial communication134 originated. In another example, the initial communication 134includes metadata that identifies the type of aircraft computing deviceand/or aircraft service executing on the originating aircraft.

In some embodiments, the aircraft interface computing device 116 isconfigured to select an aircraft API 136 for communicating with theaircraft computing device. As illustrated in FIG. 1, the aircraftinterface computing device 116 can store multiple aircraft APIs 136,with each aircraft API defining a programmatic protocol forcommunicating with a specific aircraft computing device 106 and/oraircraft service 130 executing thereon. The programmatic protocol ofeach aircraft API 136 is configured to enable the aircraft interfacecomputing device 116 to interact with one or more corresponding aircraftcomputing devices and/or corresponding aircraft services 130 thereof.The selected aircraft API 136 then uses its programmatic protocol tofacilitate a data exchange between the ground computing device 102 andthe aircraft computing device and/or aircraft service executing on theoriginating aircraft. In some embodiments, the aircraft interfacecomputing device 116 selects an appropriate aircraft API based on aschedule or table that indicates relationships between aircraftidentifiers and/or aircraft classifiers and corresponding programmaticprotocols of aircraft API. In this way, not only can the aircraftinterface computing device 116 quickly select and/or automaticallydeploy an aircraft API 136 for interfacing with any aircraft computingdevice 106, but by acting as an intermediate decoupled interface fromground services operated by ground computing device 102, each of theground services are able to interface with any type of aircraftcomputing device 106 and/or aircraft service 130. In other embodiments,an appropriate aircraft API 136 is automatically available and utilizedfor interaction with a corresponding aircraft service 130 as a result ofthe initial communication 134.

In some embodiments, the aircraft interface computing device 116 alsoreceives an additional initial communication from another aircraftcomputing device 110 onboard another aircraft 112 over the air-to-groundnetwork 128. The additional initial communication includes one or moreaircraft identifiers, which the aircraft interface computing device 116uses to identify one or more aircraft classifiers associated with theother aircraft 112, the other aircraft computing device 110, and/or theaircraft service 130 executing on the other aircraft computing device110. The aircraft interface computing device 116 then uses the aircraftclassifiers to select the corresponding aircraft API 136 that is able tocommunicate with the other aircraft computing device 110, and/or theaircraft service executing on the other aircraft computing device 110.In some examples, the aircraft API 136 selected for communicating withthe other aircraft computing device 110 is the same as the aircraft API136 selected for communicating with the aircraft computing device 106.In other examples, it may be a different aircraft API.

In embodiments where the initial communication 134 includes a command toexchange a data file 104, the aircraft interface computing device 116utilizes the aircraft API 136 to facilitate such an exchange of the datafile 104. For example, where the initial communication 134 includes arequest for a particular video file to be uploaded to the aircraftcomputing device 106, the aircraft API 136 defines a programmaticprotocol for interacting with the originating aircraft computing device,and then causes the particular video file to be uploaded to the aircraftcomputing device 106. Alternatively or in addition, the aircraftinterface computing device 16 may send an initiation request to anaircraft computing device 106, such as for a selection of sensor and/orhealth data stored on the aircraft memory 132, for example, to bedownloaded from the aircraft computing device 106. In such an example,the aircraft API 136 is utilized to transmit a signal to cause theaircraft computing device 106 to transmit the selection of sensor and/orhealth data over the air-to-ground network 128.

Alternatively, where the initial communication 134 does not include acommand to exchange a data file 104, the aircraft API 136 determinesthat a data file 104 is be exchanged with the aircraft computing device106 by transmitting a command request to the ground computing device102. In some examples, the command request includes the aircraftidentifiers, aircraft classifiers, metadata that identifies theaircraft/aircraft computing device/aircraft API, or a combinationthereof. Upon receipt of the command request, the ground computingdevice 102 accesses a data construct that identifies relationshipsbetween aircraft and corresponding commands that are to be executed. Forexample, the ground computing device 102 stores and maintains a datastructure, or data construct, that stores a queue of commands that areto be performed in association with individual aircraft 108 and/oraircraft computing devices 106. In response to receiving the commandrequest from the aircraft interface computing device 116, the groundcomputing device 102 uses the aircraft identifiers, aircraftclassifiers, and/or metadata included in the command request to identifythe queue associated with the corresponding aircraft 108 and/or aircraftcomputing device 106, and then identify one or more commands that are tobe executed in association with the corresponding aircraft 108 and/oraircraft computing device 106. The ground computing device 102 thentransmits the one or more commands to the aircraft interface computingdevice 116, and the aircraft API 136 is utilized to exchange data fileswith the aircraft computing device 106 according to the one or morecommands.

Where a command corresponds to a data file 104 being transmitted from anaircraft computing device 106 to another computing device (e.g., groundcomputing device 102, third party computing devices 114, local storagelocations 120, etc.), the data file 104 is first transmitted to anetwork 124 (e.g., the cloud computing network 126) over theair-to-ground network 128. For example, in some embodiments, the datafile 104 is transmitted from the aircraft computing device 106 to theaircraft interface computing device 116.

In some embodiments, the data file 104 is exchanged between the aircraftcomputing device 106 and the cloud computing network 126 via a transientstorage location 122. The transient storage location 122 corresponds toa data storage resource of cloud computing network 126, and isconfigured to exchange data files 104 between the ground computingdevice 102 over the network 124, and also exchange data files 104between the aircraft computing devices 106 over the air-to-groundnetwork 128. In some embodiments, the cloud computing network 126includes a plurality of transient storage locations 122 through whichdata files 104 can be routed. Individual transient storage locations 122are geographically positioned so that they are more proximate to and/orhave stronger connections to aircraft 108 and 110 located in anassociated geographic area. Thus, by using the transient storagelocation 122, the environment 100 is able to ensure that the data file104 is transmitted to the associated aircraft computing device 106 overa stronger, more efficient, and/or more reliable uplink/downlinkconnection (i.e., connection over air-to-ground network 128).

Additionally, by using a transient storage location 122, if a break inthe communication over the air-to-ground network 128 occurs during thetransfer of the data file 104, the transfer can be resumed with minimalinvolvement from the ground computing device 102. For example, where thedata file 104 is being transmitted to the aircraft computing device 106,the transmission of the data file 104 can be resumed without the groundcomputing devices 102 needing to resend the data file 104, as the datafile 104 is fully stored in the transient storage location 122.Additionally, where the data file 104 is being transmitted from theaircraft computing device 106, the transmission of the data file 104does not need to be sent until it is fully downloaded from the aircraftcomputing device 106 to the transient storage location 122. Thus theground computing device 102 is unaffected by a break in communicationover the air-to-ground network 128 during the transfer of the data file104.

In some examples, the transient storage location 122 is selected from aplurality of transient storage locations 122 by the ground computingdevice 102, the aircraft interface computing device 116, or acombination thereof. In some examples, the transient storage location122 through which the data file 104 is to be transferred is selectedbased on the aircraft being geographically located within a thresholddistance of the transient storage location at the time the data filewill be transferred to the aircraft computing device, a flight plan ofthe aircraft, an expected strength/efficiency of the uplink/downlinkconnection between the aircraft computing device 106 and the transientstorage location 122 during at least the portion of the flight plan ofthe aircraft, or a combination thereof. In some embodiments, when thereis a break in communication over the air-to-ground network 128 duringthe transfer of the data file 104, the ground computing device 102and/or the aircraft interface computing device 116 selects a differenttransient storage location 122 through which to resume the datatransfer. For example, based on the aircraft 108 moving into a newgeographic area in which there is a stronger, more efficient, and/ormore reliable connection with a different transient storage location,the ground computing device 102 and/or the aircraft interface computingdevice 116 selects to continue the data exchange through the differenttransient storage location 122.

In some embodiments, transmitting the data file 104 from an aircraftcomputing device 106 to a ground-based computing device comprisestransmitting the data file 104 to a local storage location 120associated with the ground computing device 102. For example, the localstorage location 120 can correspond to a database that storesinformation associated with the aircraft computing device, otheraircraft computing device 110, or a subset thereof (e.g., a fleet ofaircraft computing devices). In some embodiments, the ground computingdevice 102 and/or the local storage location 120 includes a databasethat stores data from aircraft computing devices 106, and is furtherconfigured to segregate the stored data according to the aircraftclassifiers. For example, in some embodiments, the ground computingdevice 102 and/or the local storage location 120 stores the data filesreceived from aircraft computing devices 106 operated by a first airlinein a first database, and the data files received from aircraft computingdevices 106 operated by a second airline in a second database.

In some embodiments, transmitting the data file 104 from an aircraftcomputing device 106 to a ground-based computing device comprisestransmitting the data file 104 to a third party computing device 114and/or storage location associated with the third party computing device114. As an example embodiment, the ground computing device 102 and/orthe local storage location 120 segregates the stored data according tothe type of data. In some embodiments, the ground computing device 102and/or the local storage location 120 stores a security log from anaircraft in a separate database from performance logs from the aircraft.

Where a command corresponds to a data file 104 being transmitted from aground-based computing device (e.g., ground computing device 102, thirdparty computing devices 114, local storage locations 120, etc.) to anaircraft computing device 106, the data file 104 is first transmitted toan aircraft interface computing device 116 and/or transient storagelocation 122 via a network 124 (e.g., the cloud computing network 126).Upon determining that a data file is to be transmitted to aircraftcomputing device 106 operating on aircraft 108, the ground computingdevice 102 and/or aircraft interface computing device 116 determines amost efficient path for transmitting the data file 104 to the aircraftcomputing device 106. For example, based upon the flight plan of theaircraft 108 passing through a region within which a particular aircraftinterface computing device 116 and/or transient storage location 120 hasa reliable and/or high quality air-to-ground coverage, the data file 104is transmitted to the particular aircraft interface computing device 116and/or transient storage location 122, and then transmitted to theaircraft computing device 106 from the particular aircraft interfacecomputing device 116 and/or transient storage location 122 via theair-to-ground network 128.

Due to the unreliability of air-to-ground connections, breaks inconnection occur during data exchanges with aircraft computing devices106 over the air-to-ground network 128. When such a break occurs, theaircraft service 130 initiates an additional initial communication. Uponreception of the additional initial communication, an aircraft interfacecomputing device 116 causes the broken data exchange to continue. Theadditional initial communication includes one or more aircraftidentifiers associated with the aircraft service 130, the aircraftcomputing device 106, the aircraft 108, or a combination thereof. Insome embodiments, the additional initial communication includes acommand and/or other indication that the broken data exchange is to becompleted. Alternatively, the aircraft interface computing device 116determines that the data exchange was broken based on the one or moreaircraft identifiers included in the additional initial communicationand/or metadata stored by the aircraft interface computing device 116,the ground computing device 102, and/or a transient storage location122. In some embodiments, the additional initial communication isreceived by an aircraft interface computing device that is differentfrom the aircraft interface computing device 116 that received theinitial communication 134. For example, due to the aircraft 108traveling to a new geographic region, the additional initialcommunication is received by an aircraft interface computing device 116in the new geographic region. The aircraft interface computing device116 then utilizes an aircraft API 136 for communicating with theaircraft computing device 106 based on the one or more aircraftidentifiers included in the additional initial communication.

FIG. 2-3 are schematic diagrams illustrating example aircraft interfacecomputing devices 200 and ground computing device 300 for exchangingdata files between aircraft computing devices and a ground computingdevice, according to the present disclosure. FIG. 1 illustrates ageneralized environment and conceptual flow of operations. FIGS. 2-3illustrate additional details of hardware and software components that,in some examples according to the present disclosure, are utilized toimplement such techniques. The computing devices 200 and 300 are merelytwo examples, and the techniques described herein are not limited toperformance using the computing devices 200 and 300 of FIGS. 2-3.Accordingly, any of the details of aircraft interface computing devices200 and/or ground computing device 300 described or depicted with regardto FIGS. 2-3 may be utilized within environment 100 of FIG. 1.Additionally, any of the details described or depicted with regard toground computing device 102, aircraft interface computing devices 116,and/or additional other aircraft interface computing devices 118 withinenvironment 100 of FIG. 1 may be utilized by one or more of aircraftinterface computing devices 200 and ground computing device 300 of FIGS.2-3.

FIG. 2 is a schematic diagram illustrating example aircraft interfacecomputing devices 200 for exchanging data files between aircraftcomputing devices and a ground computing device, according to thepresent disclosure. FIG. 2 illustrates additional details of thehardware and software components that, in some examples, are utilizedwith environment 100 of FIG. 1, are utilized to communicate with groundcomputing device 300 of FIG. 3, and/or that are utilized to implementtechniques and/or methods 400, 500, 600, 700, and 800 illustrated inFIGS. 4-8. The aircraft interface computing devices 200 are merelyexamples, and the techniques described herein are not limited toperformance using the aircraft interface computing devices 200 of FIG.2. That is, aircraft interface computing device 200 of FIG. 2 is anexample of an aircraft interface computing device 116, and groundcomputing device 300 of FIG. 3 is an example of a ground computingdevice 102.

According to the present disclosure, in various embodiments the aircraftinterface computing devices 200 correspond to any computing device thatis connected to ground computing device 102, other aircraft interfacecomputing devices 118, and/or transient storage locations 122 over anetwork 124, and which also are connected to aircraft computing device106 and other aircraft computing devices 110 over the air-to-groundnetwork 128. As noted, the aircraft interface computing devices 200correspond to remote aircraft interface computing devices 116. Forexample, the aircraft interface computing devices 200 can include acollection of server devices that provide network services for hostingand executing aircraft APIs 136 that enables services operated by groundcomputing device 102 to interface with aircraft computing devices 106.

In FIG. 2, the aircraft interface computing devices 200 include one ormore processors 202, memory 204 communicatively coupled to the one ormore processors 202, and a network interface 206. According to thepresent disclosure, the memory 204 stores a plurality of aircraft APIs136. Each aircraft API 136 is configured to enable the aircraftinterface computing device 116 to interact with one or morecorresponding aircraft computing devices 106 and/or correspondingaircraft services 130. For example, an individual aircraft API 136 iswritten to communicate with the type of aircraft computing device 106,or aircraft service 130 thereof, deployed on a particular make and modelof aircraft. In this way, the aircraft interface computing device 116 isable to communicate with a wide number of different types of aircraftcomputing devices 106 and/or aircraft services 130. Additionally, when anew type of aircraft computing devices 106 and/or aircraft service 130is used on an aircraft, a new aircraft API 136 can be introduced thatenables the aircraft interface computing device 116 to interface withthe new type of aircraft computing devices 106 and/or aircraft service130. Moreover, if a type of aircraft computing devices 106 and/oraircraft service 130 deployed on aircraft is updated, the correspondingaircraft API 136 can be updated and/or replaced with a new aircraft API136.

FIG. 2 further illustrates memory 204 as storing an intermediate storagelocation 210 in which data files 104 can be stored during theirtransmission between an aircraft computing device 106 and the groundcomputing device 102. In an example embodiment, a data file 104 istransmitted from the ground computing device 102 over the network 124and is stored in the intermediate storage location 210, and thentransmitted from the intermediate storage location 210 to the aircraftcomputing device 106 over the air-to-ground network 128. Theintermediate storage location 210 is a dedicated area of memory 204.Alternatively or in addition, the intermediate storage location 210 is aseparate computing device such as a transient storage location 122, asschematically illustrated in FIG. 2. The transient storage location 122is a data storage resource of cloud computing network 126 that isexternal to the aircraft interface computing device 116.

The aircraft APIs 136 are executable on the one or more processors 202to cause the aircraft interface computing device 116 to facilitate theexchange of data files between aircraft computing devices 106 and aground computing device 102, such as is discussed herein with referenceto FIGS. 1 and 4-7. By acting as a decoupled interface, the aircraftinterface computing device 116 is able to be used by one or moreservices operated by ground computing device 102 to communicate withmany types of aircraft computing devices 106 and/or aircraft services130 thereof without the services needing to be individually coded tointeract with each type of aircraft computing device 106 and/or aircraftservice 130.

The aircraft APIs 136 are executable to receive an initial communication134 from an aircraft computing device 106 over the air-to-ground network128. For example, an aircraft API 136 is executable to receive aninitial communication 134 transmitted by an aircraft service 130executing on an aircraft computing device 106 and over a satellitecommunications network. In various embodiments, the initialcommunication 134 is transmitted by the aircraft service 130periodically, according to a schedule, and/or based on a trigger event,such as an input from a user associated with the aircraft (e.g., pilot,passenger, steward, etc.), a data file 104 being generated, a data file104 reaching a preset size, an available amount of the aircraft memory132 reaching or dropping below a threshold, occurrence of a preset event(e.g., reaching a preset altitude, reaching a preset location, theaircraft being airborne for a preset amount of time, etc.), or acombination thereof. For example, in some embodiments the aircraftcomputing device 106 transmits the initial communication 134 to initiatea data transfer in response to an amount of aircraft health datareaching or exceeding a threshold amount.

Alternatively or in addition, an aircraft API 136 is executable totransmit an initiation signal, and the initial communication 134 istransmitted by the aircraft computing device 106 in response to areception of the initiation signal. In various embodiments, thecorresponding aircraft API 136 transmits the initiation signalperiodically, or in response to a communication request from groundcomputing device 102. For example, where the ground computing device 102is operating a navigation service, the ground computing device 102transmits a notification that a new flight plan for aircraft 108 is tobe sent to an aircraft computing device 106, and the aircraft API 136 isexecutable to transmit the initiation signal to the aircraft computingdevice 106.

In some embodiments, the initial communication 134 includes one or moreidentifiers associated with the originating aircraft, aircraft computingdevice, aircraft service, or a combination thereof. For example, in someembodiments the initial communication 134 includes an airline identifier(e.g., an international civil aviation organization (ICAO) code or aninternational air transport association (IATA) code, etc.), an airplaneidentifier (e.g., a tail number, a registration number, a manufacturernumber, a serial number, etc.), a software identifier, or a combinationthereof.

The aircraft API 136 is further executable to determine an aircraftclassifier associated with at least one of the aircraft, aircraftcomputing device, aircraft service, or a combination thereof, from whichthe initial communication 134 originated. An aircraft classifiercorresponds to one or more of a type of the aircraft, a year of theaircraft, a model of the aircraft, an airline associated with theaircraft, a type of computing device on which the aircraft API isexecuting, a type of API to which the aircraft service 130 correspond,or a combination thereof. In an example embodiment, the aircraft API 136determines the aircraft classifier based on one or more aircraftidentifiers included in the initial communication 134. For example, insuch an embodiment based on the initial communication 134 including atail number from the originating aircraft, the aircraft interfacecomputing device 116 accesses a data lookup table (e.g., a protocolschedule) that indicates relationships between aircraft tail numbers andthe corresponding type of aircraft computing device and/or aircraftservice 130 thereof. In some examples, a protocol schedule is located onan aircraft interface computing device 116; however, in other examples,a protocol schedule is stored by the ground computing device 102 or on adevice accessible to the ground computing device 102. In suchembodiments, the aircraft interface computing device 116 determines theaircraft classifier by transmitting the aircraft identifiers included inthe initial communication 134 to the ground computing device 102, and itis the ground computing device 102 that accesses the data construct toidentify relationships between aircraft identifiers and/or aircraftclassifiers and corresponding aircraft computing devices, aircraft APIs,and/or aircraft types, and transmits the type of aircraft computingdevice, aircraft API, and/or aircraft from which the initialcommunication 134 originated. Alternatively or in addition, the initialcommunication 134 includes metadata that identifies the type of aircraftcomputing device and/or aircraft service executing on the originatingaircraft.

Aircraft APIs 136 also are executable to receive additional initialcommunications 134 from the aircraft computing device 106 and/or anotheraircraft computing device 110 onboard another aircraft 112 over theair-to-ground network 128. In some embodiments, the additional initialcommunication 134 also includes one or more aircraft identifiers. Forexample, in various embodiments, the additional initial communication134 from another aircraft 112 includes one or more aircraft identifiersthat the aircraft API 136 uses to identify one or more aircraftclassifiers associated with the other aircraft 112, the other aircraftcomputing device 110, and/or the aircraft service 130 executing on theother aircraft computing device 110.

In some embodiments, the initial communication 134 also includes acommand. The command corresponds to a request to exchange a data file104 between the ground computing device 102 and the aircraft computingdevice 106. In some examples, the command corresponds to anidentification of a data file 104 that is to be transmitted from theaircraft computing device 106 to the ground computing device 102, and/ora data file 104 that is to be transmitted from the ground computingdevice 102 to the aircraft computing device 106. Alternatively, wherethe initial communication 134 does not include a command to exchange adata file 104, the aircraft API 136 transmits a command request to theground computing device 102 to determine whether a data file 104 is tobe exchanged with the aircraft computing device 106. A command requestincludes the aircraft identifiers, the aircraft classifiers, metadatathat identifies the aircraft, the aircraft computing device, and/or theaircraft API, or a combination thereof.

Once it is determined that a command is to be exchanged between theaircraft computing device 106 and the ground computing device 102, theaircraft API 136 is executable to transmit one or more signals to causethe exchange of the data file 104 to occur. The one or more signals aretransmitted to the aircraft computing device 106, the ground computingdevice 102, or both. In some examples, the aircraft API 136 causes atransmission of a signal to the ground computing device 102 thatnotifies the ground computing device 102 that a data file 104 is to bereceived from aircraft computing device 106, and request a location towhich the data file 104 is to be transmitted. In other examples, theaircraft API 136 causes a transmission of a signal to the groundcomputing device 102 and/or to the aircraft computing device 106 thatidentifies a data file 104 that is to be transmitted, and identifies anintermediate storage location 210 (e.g., aircraft interface computingdevice 116, transient storage location 122, etc.) through which the datafile 104 is to be transmitted through. In some examples, such atransmission also includes security and/or identification informationthat the ground computing device 102 and/or the aircraft computingdevice 106 uses to verify that the ground computing device 102, theaircraft computing device 106, and/or the aircraft API 136 haspermission to access the data file 104.

FIG. 3 is a schematic diagram illustrating example ground computingdevice 300 for exchanging data files between aircraft computing devicesand a ground computing device, according to the present disclosure. FIG.3 illustrates additional details of hardware and software componentsthat, in some examples, are utilized with environment 100 of FIG. 1, areutilized to communicate with aircraft interface computing devices 200 ofFIG. 2, and/or that are utilized to implement techniques and/or methods400, 500, 600, 700 and 800 illustrated in FIGS. 4-8. Ground computingdevice 300 is merely an example, and the techniques described herein arenot limited to performance using the ground computing device 300 of FIG.3.

According to the present disclosure, in some examples, ground computingdevice 300 corresponds to any computing device that is connected to anaircraft interface computing device 116, other an aircraft interfacecomputing devices 118, and/or transient storage locations 122 over anetwork 124. In various embodiments, the ground computing device 300corresponds to a ground computing device 102. In some examples, theground computing device 300 includes a collection of many differenttypes of electronic devices, including, but not limited to, a personalcomputer, a laptop computer, a server, and so forth. In other examples,the ground computing device 300 hosts and/or operates a software-basedservice that facilitates the exchange of data files 104 between aircraftcomputing devices 106 and 110 and the ground computing device 300. Inother examples, the ground computing device 300 is associated with anentity that engages in the transmission of data files with aircraft 108in flight, such as an airline, an aircraft manufacturer, a communicationservice provider, a regulation agency, an air traffic control body, etc.

In FIG. 3, the ground computing device 300 includes one or moreprocessors 302, memory 304 communicatively coupled to the one or moreprocessors 302, and a network interface 306. According to the presentdisclosure, the memory 304 stores ground APIs 103, one or more servicemodules 308, a command module 310, and a security module 312. FIG. 3further illustrates the memory 304 as optionally housing and/or storingdata file storage 314, one or more command queues 316, and/or one ormore airline databases 318. Alternatively, one or more of the data filestorage 314, one or more command queues 316, and/or one or more airlinedatabases 318 are stored on an alternate computing device, such as athird party computing devices 114, aircraft interface computing device116, other remote aircraft interface computing devices 118, localstorage locations 120, and/or transient storage locations 122, asschematically represented in FIG. 3.

The one or more service modules 308 are executable to cause the groundcomputing device 300 to execute a software-based service. For example,in various embodiments a service module 308 is executable to cause adata file 104 to be exchanged between the ground computing device 102and an aircraft computing device 106. The service modules 308 areconfigured to utilize the aircraft interface computing device as adecoupled interface to facilitate data exchange between the groundcomputing device 102 and aircraft computing devices 106. Because servicemodules 308 are configured to utilize the aircraft interface computingdevice as a decoupled interface for interacting with aircraft computingdevices 106, the service modules 308 do not need to be coded to be ableto interface with each version/type of aircraft computing device 106and/or aircraft service 130 thereof. Instead, each service module 308needs only to be written to interact with the aircraft APIs 136, and theaircraft APIs 136 facilitate communication with the aircraft computingdevices 106 and 108 and/or aircraft services 130 thereof. Not only doesthis simplify the initial coding requirements of creating new servicemodules 308, but it also decreases maintenance requirements as updatesto the ability of the aircraft APIs 136 to communicate with new types ofaircraft computing devices 106 and aircraft APIs 136 also enable theservice modules 308 to communicate with the new types of aircraftcomputing devices 106 and aircraft services 130.

In an example embodiment, the ground computing device 102 is associatedwith an airline that operates a fleet of aircraft, and a service module308 is executable to cause the ground computing device 300 to gather andstore component health data collected by aircraft sensors of the fleetof aircraft via the aircraft APIs 136. Such a service module 308 alsooptionally can be configured to provide the component health data tothird party computing devices associated with the airline, analyze thecomponent health data to determine components that are likely to requiremaintenance and/or replacement, provide notifications of maintenancesuggestions for the fleet of aircraft, or a combination thereof. Asanother example, a service module 308 is executable to cause the groundcomputing device 300 to transmit software instructions and/or updates toaircraft computing devices 106 via the aircraft APIs 136.

As shown in FIG. 3, the memory 304 optionally includes data file storage314. The data file storage 314 includes one or more databases and/orstorage locations where data files 104 are stored. For example, the datafile storage 314 can be hosted on storage locations on the memory 304,storage devices accessible to the ground computing device 300 (e.g.,local storage locations 120, third party computing devices 114, etc.),or a combination thereof. Examples of data files 104 include a softwaremodule, a software update, a flight plan, an entertainment file, analert, a message, a security log, a performance log, health monitoringdata, a system log, or other data construct that is associated with theperformance and/or operation of a corresponding aircraft 108 or 112. Forexample, memory 304 may include a first data file storage in which datafiles that are to be transmitted to aircraft computing devices arestored, and a second data file storage in which data files that arereceived from the aircraft computing device are stored. In someembodiments, the data files 104 stored in the data file storage 314 issegregated according to data file type, aircraft type, aircraftidentity, aircraft computing device, airline, or other classificationmeans. For example, in some embodiments the data file storage 314includes multiple dedicated storage areas, where each dedicated storagearea stores data files that correspond to a particular airline, servicemodule, aircraft type, aircraft computing device type, etc.

The command module 310 is executable to cause the ground computingdevice 300 to receive commands, generate a command queue 316, maintainthe command queue 316, and/or determine commands that are to be executedbased on the command queue 316. A command is a software-basedinstruction that identifies an action and/or data transfer that is tooccur between the ground computing devices 102 and one or more aircraftcomputing device 106. An example command identifies a data file 104 thatis to be exchanged, one or more identifiers and/or aircraft classifierswith the data file 104 that is to be exchanged, a schedule of when thedata file 104 is to be exchanged, or other instructions that enable thecommand module 310 to facilitate the execution of a data exchangeincluded in the command. In some examples, a command corresponds to aninstruction that sensor data collected by aircraft computing devicesoperating on aircraft of a certain classification (i.e., aircraft type,sensor type, etc.) be transmitted from the individual aircraft computingdevices to the ground computing device 300 according to a determinedfrequency or schedule. In some embodiments, a command also includessecurity, identification, and/or permissions information that enablesthe data exchange included in the command to occur. For example, such acommand can include a security key that is to be provided in order for adata file 104 in the data file storage 314 to be accessed and/ortransmitted.

In some embodiments, the commands are received via user inputs into theground computing device 300 (e.g., inputs provided via a keyboard,mouse, touchpad, camera, audio, etc.), a physical input to the groundcomputing device 300 (e.g., a CD, DVD, software input, etc.), datainputs provided to the ground computing device 300 via the networkinterface 306 (e.g., input from a third party computing device 114,aircraft computing device 106, etc.), or a combination thereof. In anexample embodiment, a user enters one or more identifiers and/orclassifiers of one or more aircraft, and a selection of a data file 104that is to be exchanged between the ground computing device 300 and theone or more aircraft computing devices operating on aircraft associatedwith the one or more identifiers and/or classifiers. Alternatively or inaddition, commands are generated by a service module 308 executing onthe ground computing device 300. For example, a service module 308 thatmonitors flight conditions can determine that the weather in aparticular geographic region is hazardous, and then generate and provideto the command module 310 a command to transmit a warning of thehazardous weather and/or a new flight plan that avoids the hazardousweather to the individual aircraft computing devices operating onaircraft within the geographic region.

In some embodiments, the command module 310 is further executable toreceive the data files 104 for upload to one or more aircraft computingdevices 106. In some embodiments, a data file 104 is input directly intothe ground computing device 300 via a user input such as by keyboard,touchscreen, mouse selection, etc. Alternatively, the data file 104 isreceived by the command module 310 via a data transfer from anothercomputing device, such as from third party computing device 114. In anexample embodiment, a computing device operated by an airline providesthe command module 310 with a video file that is to be uploaded to theentertainment systems of aircraft in its fleet. In another example, athird party software provider that provides aircraft software executingon an aircraft computing device transmits a software update for theaircraft software. Additionally, in some embodiments the command module310 also receives a data file from the service module 308. For example,memory 304 can optionally store a service module 308 that is configuredto generate, update, and distribute flight plans to aircraft computingdevice 106. Such a service module 308 generates a new flight plan for anaircraft 108, and transmits the new flight plan to the command module310 and/or the data file storage 314 for storage and ultimatedistribution to the aircraft computing device 106.

In some embodiments, the command module 310 is further executable togenerate and maintain one or more command queues 316. A command queue316 corresponds to a data structure, or data construct, that comprisesone or more commands that are to be executed, and an order in which theone or more commands are to be executed. Individual command queues 316comprise commands that are to be executed with regard to a particularaircraft, an aircraft type, an airline, and/or aircraft corresponding toparticular identifiers and/or classifiers, etc. Maintaining a commandqueue 316 involves adding new commands to the command queue 316,removing commands from the command queue 316 once completed, updating astatus of a command within the command queue (e.g., pending,interrupted, etc.), reordering the commands in the command queue 316, ora combination thereof. For example, when a repeating command that a datafile 104 is to be obtained from an associated aircraft computing device,the command module 310 removes the command from the command queue 316and adds a new command that corresponds to the next time the repeatingcommand is to reoccur.

In some embodiments, the command module 310 maintains an individualcommand queue 316 of commands that are to be executed with regard toaircraft 108. Alternatively or in addition, an individual command queue316 is comprised of commands that are to be executed with aircraftassociated with a particular identifier and/or classifier, airline,geographic location, etc. In some examples, the order of commands in aqueue is updated each time execution of a command is completed, and/orthey may be dynamically updated by the command module 310. In an exampleembodiment, the order of the commands in a command queue is dynamicallyreordered based on one or more of an importance or urgency of individualcommands; the size of the data file; the flight plan of the aircraft; aperformance of the cloud network; and the capabilities of the aircraftcomputing device. For example, where a particular command indicates thatit is required to be executed before a particular time, as theparticular time approaches, an urgency rating associated with thecommand is increased, resulting in the command module 310 reordering theassociated command queue 316 so that the particular command ispositioned higher in the command queue 316. In another example, based ona performance of the air-to-ground network between an aircraft interfacecomputing device 116 and/or transient storage location 122 and theaircraft computing device 106, the command module 310 determines that acurrent connection will not be live long enough to transmit files abovea threshold size, and reorders the associated command queue 316 so thatcommands that are expected to be able to executed over the currentconnection are higher in the command queue 316.

The command module 310 is further executable to receive command requestsfrom aircraft interface computing devices 116. In an example embodiment,a command request is transmitted to the command module 310 by anaircraft API 136 to determine whether a data file 104 is to be exchangedwith a particular aircraft computing device 106. Such a command requestincludes information, such as aircraft identifiers and/or classifiersassociated with the particular aircraft computing device 106, metadatathat identifies the aircraft, the aircraft computing device, theaircraft API, or a combination thereof. The command module 310 isexecutable to use this information to identify a command queue 316 thatcorresponds to data files 104 that are to be exchanged with theparticular aircraft computing device 106.

In some embodiments, the command module 310 is configured to determineinformation associated with the particular aircraft computing device106. In some embodiments, the command module 310 accesses an airlinedatabase 318 and/or other resource to identify additional informationabout the particular aircraft computing device 106. For example, wherethe command request includes a tail number of the associated aircraft108, the command module 310 uses the tail number to identify otherairline identifiers and/or classifiers associated with the aircraft 108within the airline database 318. In this way, even when the commandrequest includes very little identification information, the commandmodule 310 is able to use the record in the airline database 318 todetermine additional information about the aircraft 108. In anotherexample, the command module 310 uses the information in the commandrequest to identify a location of the aircraft 108, and accesses aweather resource to determine weather conditions in the geographiclocation of the aircraft 108.

In some embodiments, the command module 310 identifies a plurality ofcommands that are to be executed in relation to the particular aircraftcomputing device 106 (i.e., from a pool of commands, from a plurality ofcommand queues, etc.), and then dynamically generate a command queue 316for the particular aircraft computing device 106. For example, where thequeue request identifies an airline, an aircraft type, and a geographiclocation of the associated aircraft, the command module 310 identifiescommands that are to be executed with aircraft operated by the airline,with aircraft of the aircraft type, with the aircraft within thegeographic location, and/or a combination thereof. In some embodiments,the command module 310 then generates a command queue 316 of therelevant commands that are to be executed with the particular aircraftcomputing device 106 and an order in which they are to be executed.

In various embodiments, the command module 310 uses the command queue316 to determine a command that is to be executed with the particularaircraft computing device 106, and then transmits one or more signals tothe aircraft interface computing device 116 that are configured to causethe aircraft interface computing device 116 to facilitate the executionof the command. For example, in some embodiments, the signals identify adata file 104 that is to be exchanged between the ground computingdevice 300 and the particular aircraft computing device 106, a locationthat the data file 104 is to be transmitted from/to, security and/orpermissions information required to facilitate the exchange (e.g.,passwords, security key, identifiers, etc.), or a combination thereof.

In some embodiments, the command module 310 is further executable toselect a transient storage location 122 through which the data file 104is to be transferred during the data exchange. The transient storagelocation 122 is selected from a plurality of transient storage locations122 by the ground computing device 300, the aircraft interface computingdevice 200, or a combination thereof. In some embodiments, the transientstorage location 122 through which the data file 104 is to betransferred is selected based on the aircraft being geographicallylocated within a threshold distance of the transient storage location122 at the time the data file 104 will be transferred to the aircraftcomputing device 106, a flight plan of the aircraft, an expectedstrength/efficiency of the uplink/downlink connection between theaircraft computing device 106 and the transient storage location 122during at least the portion of the flight plan of the aircraft, or acombination thereof. In some embodiments, when there is a break incommunication over the air-to-ground network 128 during the transfer ofthe data file 104, the ground computing device 300 and/or the aircraftinterface computing device 200 selects a different transient storagelocation 122 through which to resume the data transfer. For example,based on the aircraft 108 moving into a new geographic area in whichthere is a stronger, more efficient, and/or more reliable connectionwith a different transient storage location, the ground computing device300 and/or the aircraft interface computing device 116 selects tocontinue the data exchange through the different transient storagelocation 122.

In some embodiments, the command module 310 also is executable toreceive transmissions from the aircraft interface computing device 200to execute the command. Such transmissions include instructions and/ormetadata that cause the command module 310 to initiate the transfer,such as a name of the data file, a type of the data file, a size of thedata file, security and/or permissions information required tofacilitate the exchange (e.g., passwords, security key, identifiers,etc.), a time stamp for the data file, a time stamp for the transfer, anairplane classifier, an airline identifier, an airplane identifier, alocation of the aircraft, a location of the transient storage location,and a unique storage location (e.g., a URL) for the data file to betransmitted to, or a combination thereof. Alternatively or in addition,in some examples, such transmissions include a request for a uniquestorage location of the data file storage 314 or other storage locationto which the data file 104 is to be transmitted.

In some embodiments, the command module 310 is executable to receive aclassification request from an aircraft interface computing device 116.Such a classification request includes an identifier received from aparticular aircraft computing device 106, and a request forclassification information about the associated aircraft. The commandmodule 310 can determine the classification information by accessing theairline databases 318 and/or other resources, and use the identifier tofind further classification information about the particular aircraftcomputing device 106. For example, in some embodiments the commandmodule 310 accesses an airline database 318, and uses the relationshipsindicated in the airline database 318 to determine classificationinformation (i.e., one or more of a type of aircraft, a year of theaircraft, a model of the aircraft, an airline associated with theaircraft, a type of computing device on which the aircraft API isexecuting, a type of API to which the aircraft API corresponds, etc.)

According to the present disclosure, in some examples, the one or moreprocessors 202 and 302 are configured to execute instructions,applications, or programs stored in memories 204 and 304. In someexamples, the one or more processors 202 and 302 include hardwareprocessors that include, without limitation, a hardware centralprocessing unit (CPU), a graphics processing unit (GPU), afield-programmable gate array (FPGA), a complex programmable logicdevice (CPLD), an application-specific integrated circuit (ASIC), asystem-on-chip (SoC), or a combination thereof.

The memories 204 and 304 are examples of computer-readable media. Insome examples, computer-readable media include two types ofcomputer-readable media, namely computer storage media and communicationmedia. In some examples, computer storage media includes volatile andnon-volatile, removable and non-removable media implemented in anymethod or technology for storage of information, such ascomputer-readable instructions, data structures, program modules, orother data. Computer storage media includes, but is not limited to,random access memory (RAM), read-only memory (ROM), erasableprogrammable read-only memory (EPROM), electrically erasableprogrammable read-only memory (EEPROM), flash memory or other memorytechnology, compact disc read-only memory (CD-ROM), digital versatiledisk (DVD), or other optical storage, magnetic cassettes, magnetic tape,magnetic disk storage or other magnetic storage devices, or any othernon-transmission medium that may be used to store the desiredinformation and which may be accessed by a computing device, such asground computing device 102, aircraft interface computing devices 116,third party computing devices 114, transient storage locations 122,and/or aircraft computing devices 106 and 110. In general, computerstorage media may include computer-executable instructions that, whenexecuted by one or more processors, cause various functions and/oroperations described herein to be performed.

In contrast, communication media embody computer-readable instructions,data structures, program modules, or other data in a modulated datasignal, such as a carrier wave, or other transmission mechanism. Asdefined herein, computer storage media does not include communicationmedia.

Additionally, the network interfaces 206 and 306 include physical and/orlogical interfaces for connecting the respective computing devices toanother computing device or a network. For example, in some embodiments,the network interfaces 206 and 306 enable WiFi-based communication suchas via frequencies defined by the IEEE 802.11 standards, short rangewireless frequencies such as Bluetooth™, or any suitable wired orwireless communications protocol that enables the respective computingdevice to interface with the other computing devices.

The architectures, systems, and individual elements described herein mayinclude many other logical, programmatic, and physical components, ofwhich those shown in the accompanying figures are merely examples thatare related to the discussion herein.

FIGS. 4-8 schematically provide flowcharts that represent examples ofmethods according to the present disclosure. In FIGS. 4-8, some stepsare illustrated in dashed boxes indicating that such steps may beoptional or may correspond to an optional version of a method accordingto the present disclosure. That said, not all methods according to thepresent disclosure are required to include the steps illustrated indashed boxes. Additionally, the order of steps illustrated in FIGS. 4-8is exemplary, and in different embodiments, the steps in FIGS. 4-8 maybe performed in a different order. The methods and steps illustrated inFIGS. 4-8 are not limiting, and other methods and steps are within thescope of the present disclosure, including methods having greater thanor fewer than the number of steps illustrated, as understood from thediscussions herein.

FIG. 4 is a flowchart depicting methods 400, according to the presentdisclosure, for exchanging data files between an aircraft computingdevice 106 and a ground computing device 102. As shown in FIG. 4, atoperation 402, the aircraft computing device transmits a communication.For example, in some examples, an aircraft service 130 executing on theaircraft computing device causes a communication to be transmitted toone or more aircraft interface computing devices. In some such examples,the communication is transmitted over an air-to-ground network 128, sucha wireless network, a satellite network, a cellular network, or othertype of air-to-ground network that allows uplinks/downlinks tofacilitate data exchanges between an aircraft in flight and aground-based computing device. In some examples, the communicationincludes one or more identifiers that are associated with thecorresponding aircraft, aircraft computing device, aircraft service, ora combination thereof. As examples, the communication includes one ormore of an airline identifier (e.g., an international civil aviationorganization (ICAO) code or an international air transport association(IATA) code, etc.), an airplane identifier (e.g., a tail number, aregistration number, a manufacturer number, a serial number, etc.), anda software identifier. In addition, in some examples, the communicationalso includes a software-based instruction that identifies an actionand/or data transfer that is to occur between ground computing devicesand the aircraft computing device.

In some examples, the aircraft service causes the aircraft computingdevice to transmit the communication periodically, according to aschedule, and/or based on a trigger event, such as an input from a userassociated with the aircraft (e.g., pilot, passenger, steward, etc.), adata file being generated, a data file reaching a preset size, anavailable amount of the aircraft memory reaching or dropping below athreshold, occurrence of a preset event (e.g., reaching a presetaltitude, reaching a preset location, the aircraft being airborne for apreset amount of time, etc.), and/or reception of a transmission from anexternal computing device, such as a ground computing device, anaircraft interface computing device, a transient storage location, oranother computing device.

At operation 404, the aircraft interface computing device receives thecommunication over the air-to-ground network. In some examples,receiving the communication includes establishing a secure connectionbetween the aircraft computing device and the aircraft interfacecomputing device. In some embodiments, more than one aircraft interfacecomputing device receives the communication, and it is determined whichone of the aircraft interface computing devices is to establish a secureconnection with the aircraft computing device.

At operation 406, the aircraft interface computing device optionallydetermines an aircraft classifier. For example, in response to receivingthe communication, in some examples, the aircraft interface computingdevice determines an aircraft classifier associated with at least one ofthe aircraft, aircraft computing device, aircraft API, or a combinationthereof, from which the communication originated. In some examples, anaircraft classifier corresponds to one or more of a type of theaircraft, a year of the aircraft, a model of the aircraft, an airlineassociated with the aircraft, a type of computing device on which theaircraft service is executing, a type of service to which the aircraftservice corresponds, or a combination thereof.

In some examples, the aircraft interface computing device determines theaircraft classifier based on one or more aircraft identifiers includedin the communication. For example, based on the communication includinga serial number from the originating aircraft, in some examples, theaircraft interface computing device accesses a data lookup table thatindicates relationships between aircraft serial numbers and thecorresponding type of aircraft computing device and/or aircraft service.Alternatively, in other examples, the aircraft interface computingdevice transmits the aircraft identifier and/or aircraft classifier to aground computing device, which then accesses a data construct thatidentifies relationships between aircraft identifiers and/or aircraftclassifiers and corresponding aircraft computing devices, aircraftservices, and/or aircraft types. In some such examples, the groundcomputing device then transmits the determined aircraft identifiersand/or aircraft classifiers to the aircraft interface computing device.

At operation 408, the aircraft interface computing device optionallyselects a programmatic protocol. Specifically, in some examples, theaircraft interface computing device is configured to select an aircraftAPI 136 for communicating with the aircraft computing device and/oraircraft service 130 executing on the originating aircraft. In someexamples, the aircraft interface computing device stores multipleaircraft APIs with each aircraft API defining a programmatic protocolfor communicating with a specific aircraft computing device and/oraircraft service executing thereon. The programmatic protocol of eachaircraft API is configured to enable the aircraft interface computingdevice to interact with one or more corresponding aircraft computingdevices and/or corresponding aircraft services. In some embodiments, theaircraft interface computing device selects the appropriate aircraft APIbased on a schedule or table that indicates relationships betweenaircraft identifiers and/or aircraft classifiers and correspondingaircraft APIs. In other embodiments, an appropriate aircraft API isautomatically available and utilized for interaction with acorresponding aircraft services as a result of the initial communicationfrom the originating aircraft.

At operation 410, the aircraft interface computing device transmits acommand using the aircraft API. For example, in some embodiments, theaircraft API executing on the aircraft interface computing device thenuses its programmatic protocol to facilitate a data exchange between theground computing device and the aircraft computing device. In this way,by quickly identifying or automatically selecting and deployingappropriate aircraft APIs across a wide range of aircraft types and/ortypes of aircraft services, the aircraft interface computing device isable to act as a decoupled interface that enables ground-based softwareservices to conduct communication and data exchanges with aircraftcomputing devices without the software services needing to beindividually programmed to communicate with each type of aircraft and/oraircraft service.

At operation 412, the aircraft computing device optionally receives thecommand from the aircraft interface computing device. For example, insome embodiments, the aircraft computing device receives a communicationthat indicates that a data file is to be exchanged between the aircraftcomputing device and one or more ground computing devices. In someexamples, the command includes instructions and/or metadata that causethe aircraft computing device to initiate the transfer, such as a nameof the data file, a type of the data file, a size of the data file,security and/or permissions information required to facilitate theexchange (e.g., passwords, security key, identifiers, etc.), a timestamp for the data file, a time stamp for the transfer, an airplaneclassifier, the airline identifier, the airplane identifier, a locationof the aircraft, a location of the transient storage location, and aunique storage location (e.g., a URL) to which and/or from which thedata file is to be transmitted, or a combination thereof. At operation414, the aircraft computing device exchanges the data file with theground computing device.

At operation 416, the ground computing device optionally receives thecommand from the aircraft interface computing device. In some examples,the ground computing device also receives transmissions from theaircraft interface computing device to exchange the data file with theaircraft computing device. In some such examples, such transmissionsinclude instructions and/or metadata that cause the ground computingdevice to initiate the transfer, such as a name of the data file, a typeof the data file, a size of the data file, security and/or permissionsinformation required to facilitate the exchange (e.g., passwords,security key, identifiers, etc.), a time stamp for the data file, a timestamp for the transfer, an airplane classifier, the airline identifier,the airplane identifier, a location of the aircraft, a location of thetransient storage location, and a unique storage location (e.g., a URL)for the data file to be transmitted to, or a combination thereof.Alternatively or in addition, such transmissions include a request for aunique storage location of the data file storage or other storagelocation to which the data file is to be transmitted. At operation 418,the ground computing device exchanges the data file with the aircraftcomputing device.

FIG. 5 is a flowchart depicting methods 500, according to the presentdisclosure, for exchanging data files between a plurality of aircraftcomputing devices 106 and a ground computing device 102. As shown inFIG. 5, at operation 502, the first aircraft computing device transmitsa first communication. In some embodiments, a first aircraft serviceexecuting on the first aircraft computing device causes the firstcommunication to be transmitted to one or more of the first aircraftinterface computing device and the second aircraft interface computingdevice. In some examples, the first communication is transmitted over anair-to-ground network, such a wireless network, a satellite network, acellular network, or other type of air-to-ground network that allowsuplinks/downlinks to facilitate data exchanges between an aircraft inflight and a ground-based computing device. In some examples, the firstcommunication includes one or more identifiers that are associated withthe first aircraft, first aircraft computing device, first aircraftservice, or a combination thereof. For example, in some embodiments, theone or more identifiers include one or more of an airline identifier(e.g., an international civil aviation organization (ICAO) code or aninternational air transport association (IATA) code, etc.), an airplaneidentifier (e.g., a tail number, a registration number, a manufacturernumber, a serial number, etc.), and a software identifier. In addition,in some examples, the first communication also includes a software-basedinstruction that identifies an action and/or data transfer that is tooccur between ground computing devices and the first aircraft computingdevice.

In some examples, the first aircraft service causes the first aircraftcomputing device to transmit the first communication periodically,according to a schedule, and/or based on a trigger event, such as aninput from a user associated with the first aircraft (e.g., pilot,passenger, steward, etc.), a data file being generated, a data filereaching a preset size, an available amount of aircraft memory reachingor dropping below a threshold, occurrence of a preset event (e.g.,reaching a preset altitude, reaching a preset location, the aircraftbeing airborne for a preset amount of time, etc.), and/or reception of atransmission from an external computing device, such as the groundcomputing devices, an aircraft interface computing device, a transientstorage location, or another computing device.

At operation 504, the first aircraft interface computing device receivesthe communication. In some examples, receiving the communicationincludes establishing a secure connection between the first aircraftcomputing device and the first aircraft interface computing device. Insome embodiments, both the first aircraft interface computing device andthe second aircraft interface computing device receive the firstcommunication, and it is determined that the first aircraft interfacecomputing device is to establish a secure connection with the aircraftcomputing device.

At operation 506, the first aircraft interface computing deviceoptionally determines an aircraft classifier. For example, in someembodiments, in response to receiving the first communication, the firstaircraft interface computing device determines an aircraft classifierassociated with at least one of the first aircraft, first aircraftcomputing device, first aircraft service, or a combination thereof. Insome examples, an aircraft classifier corresponds to one or more of atype of the first aircraft, a year of the first aircraft, an aircraftmodel of the first aircraft, an airline associated with the firstaircraft, a type of computing device on which the first aircraft serviceis executing, a type of service to which the first aircraft servicecorresponds, or a combination thereof. In some examples, the firstaircraft interface computing device determines the aircraft classifierbased on one or more aircraft identifiers included in the firstcommunication. For example, based on the first communication including aserial number of first aircraft, in some examples, the first aircraftinterface computing device accesses a data lookup table that indicatesrelationships between aircraft serial numbers and the corresponding typeof aircraft computing device and/or aircraft service. Alternatively, inother examples, the first aircraft interface computing device transmitsthe one or more aircraft identifiers to a ground computing device, whichthen accesses a data construct that identifies relationships betweenaircraft identifiers and/or aircraft classifiers and correspondingaircraft computing devices, aircraft services, and/or aircraft types. Insome examples, the ground computing device then transmits the aircraftclassifiers associated with the one or more aircraft identifiers to thefirst aircraft interface computing device.

At operation 508, the first aircraft interface computing deviceoptionally selects an appropriate aircraft API. Specifically, the firstaircraft interface computing device is configured to select an aircraftAPI for communicating with the first aircraft computing device and/orfirst aircraft service executing thereon. In some examples, the firstaircraft interface computing device stores multiple aircraft APIs witheach aircraft API defining a programmatic protocol for communicatingwith a specific aircraft computing device and/or aircraft serviceexecuting therein. The programmatic protocol of each aircraft API isconfigured to enable the first aircraft interface computing device tointeract with one or more corresponding aircraft computing devicesand/or corresponding aircraft services. In some embodiments, the firstaircraft interface computing device selects the appropriate aircraft APIbased on a schedule or table that indicates relationships betweenaircraft identifiers and/or aircraft classifiers and correspondingaircraft APIs. In other embodiments, an appropriate aircraft API isautomatically available and utilized for interaction with acorresponding aircraft services as a result of the initial communicationfrom the originating aircraft.

At operation 510, the first aircraft interface computing devicedetermines whether there is a command associated with the firstcommunication. If the answer is yes (there is a command associated withthe first communication), then the process continues to operation 512,where the first aircraft interface computing device transmits one ormore notifications. For example, in some examples, the first aircraftinterface computing device transmits notifications that includeinformation configured to cause the command to be executed using theprogrammatic protocol to the first computing device, the groundcomputing device, or both. The command causes a data file to beexchanged between the first computing device and the ground computingdevice.

In some embodiments, where the command included in the firstcommunication indicates that a data file is to be exchanged between thefirst aircraft interface computing device and the ground computingdevice, a first aircraft API executing on the first aircraft interfacecomputing device uses the selected aircraft API to facilitate a dataexchange between the ground computing device and the aircraft computingdevice. For example, in some embodiments, the first aircraft interfacecomputing device uses the selected aircraft API to interface with afirst aircraft service executing on the first aircraft computing device,and to cause the first aircraft service to perform one or more actionsto facilitate the data exchange.

At operation 514, the first aircraft computing device optionallyreceives the notification from the first aircraft interface computingdevice. For example, in some embodiments, the first aircraft computingdevice receives a notification that indicates that a data file is to beexchanged between the first aircraft computing device and groundcomputing device via the selected aircraft API. In some examples, thecommand includes instructions and/or metadata that causes the firstaircraft computing device to initiate the transfer of the data file,such as a name of the data file, a type of the data file, a size of thedata file, security and/or permissions information required tofacilitate the exchange (e.g., passwords, security key, identifiers,etc.), a time stamp for the data file, a time stamp for the transfer, anairplane classifier, the airline identifier, the airplane identifier, alocation of the aircraft, a location of the transient storage location,and a unique storage location (e.g., a URL) to which and/or from whichthe data file is to be transmitted, or a combination thereof. Atoperation 516, the first aircraft computing device exchanges the datafile with the ground computing device.

At operation 518, the ground computing device optionally receives thenotification from the first aircraft interface computing device. In someexamples, the ground computing device also receives notifications fromthe first aircraft interface computing device to exchange the data filewith the first aircraft computing device. In some such examples, suchnotifications include instructions and/or metadata that cause the groundcomputing device to initiate the transfer of the data file, such as aname of the data file, a type of the data file, a size of the data file,security and/or permissions information required to facilitate theexchange (e.g., passwords, security key, identifiers, etc.), a timestamp for the data file, a time stamp for the transfer, an airplaneclassifier, the airline identifier, the airplane identifier, a locationof the aircraft, a location of the transient storage location, and aunique storage location (e.g., a URL) for the data file to betransmitted to, or a combination thereof. Alternatively or in addition,such notifications include a request for a unique storage location ofthe data file storage or other storage location to which the data fileis to be transmitted. At operation 520, the ground computing deviceexchanges the data file with the first aircraft computing device.

However, if the answer at operation 510 is no (there is not a commandassociated with the first communication), then the process continues tooperation 522, where the first aircraft interface computing devicedetermines whether there is a pending command for the aircraft. If theanswer is yes (there is a pending command for the first aircraft), thenthe process continues to operation 524, where the first aircraftinterface computing device causes the execution of the pending commandto continue. In some examples, the pending command corresponds to apreviously initiated data transfer of the data file that was interruptedby a break in communication with the aircraft computing device over theair-to-ground network.

In some embodiments, the first aircraft interface computing devicedetermines that there is a pending command for the first aircraft bytransmitting a command request to the ground computing device, andreceiving a notification from the ground computing device that aprevious data exchange with the first aircraft computing device wasinterrupted and that it should be continued. In some examples, thenotification that the previous data exchange should be continuedincludes information necessary to cause the first aircraft interfacecomputing device to continue the execution of the command, such as aname of the data file, an aircraft identifier, an aircraft classifier,an amount of the data file transferred, an identification of the lastportion of the data file that was transferred, a storage location towhich or from which the data file is to be transferred, etc.

Alternatively or in addition, the first aircraft interface computingdevice determines that there is a pending command for the first aircraftbased on metadata stored on one of the first aircraft interfacecomputing device, the second aircraft interface computing device, theground computing device, or a transient storage location. For example,in some embodiments, when a break in communication occurs, one or morecomputing devices involved in the data transfer store metadata thatindicates information about the data transfer, such as a name of thedata file, an aircraft identifier, an aircraft classifier, an amount ofthe data file transferred, an identification of the last portion of thedata file that was transferred, a storage location to which or fromwhich the data file is to be transferred, etc. Thus, by accessing themetadata, the first aircraft interface computing device is able todetermine both that a pending command for the first aircraft exists andthe information necessary to resume the exchange of the correspondingdata file. In this way, the first aircraft interface computing device isable to cause the execution of the command to continue from the point atwhich the breakage occurred, reducing the amount of redundant data thatis transferred over the air-to-ground network.

In some embodiments, the pending command corresponds to an exchange of adata file between the first aircraft computing device and a differentcomputing device (e.g., the second aircraft interface computing device,a transient storage location, etc.) over the air-to-ground network. Forexample, in some embodiments, the pending command corresponds to a dataexchange between the first aircraft computing device and the secondaircraft interface computing device that was interrupted due to thefirst aircraft moving into a geographic area that no longer allowed foran uplink/downlink connection between the second aircraft interfacecomputing device and the first aircraft computing device. In such asituation, if the first aircraft moves into a new geographic region inwhich the first aircraft computing device is able to connect to thefirst aircraft interface computing device over the air-to-groundnetwork, the data transfer may be resumed between the first aircraftinterface computing device and the first aircraft computing device.Where the data transfer corresponds to a transmission of the data filefrom the first aircraft computing device to the ground computing device,each of the first aircraft interface computing device and the secondaircraft interface computing device sends one or more portion of thedata file that it received from the first aircraft computing device, andthe ground computing device assembles the data file based on thereceived portions.

If the answer at operation 522 is no (there is not a pending command forthe first aircraft), then the process continues to operation 526, wherethe first aircraft interface computing device transmits a message to theground computing device requesting a command associated with the firstaircraft computing device. If the ground computing device transmits aresponse indicating a command that is to be executed with regard to thefirst aircraft computing device, the first aircraft interface computingdevice performs one or more actions to cause the execution of thecommand. Alternatively, if the ground computing device transmits aresponse indicating that there is not a command to be executed withregard to the first aircraft computing device, the first aircraftinterface computing device transmits a message to the first aircraftcomputing device that no commands are to be executed at this time.

FIG. 5 further illustrates operation 528, where a second aircraftcomputing device optionally transmits a second communication. Forexample, in some embodiments, a second aircraft service executing on thesecond aircraft computing device causes the second communication to betransmitted to one or more of the first aircraft interface computingdevice and the second aircraft interface computing device. In someexamples, the second communication is transmitted over an air-to-groundnetwork, such as a wireless network, a satellite network, a cellularnetwork, or other type of air-to-ground that allows uplinks/downlinks tofacilitate data exchanges between an aircraft in flight and aground-based computing device. In some examples, the secondcommunication includes one or more identifiers that are associated withthe second aircraft, second aircraft computing device, second aircraftservice, or a combination thereof. In some examples, the one or moreidentifiers includes one or more of an airline identifier (e.g., aninternational civil aviation organization (ICAO) code or aninternational air transport association (IATA) code, etc.), an airplaneidentifier (e.g., a tail number, a registration number, a manufacturernumber, a serial number, etc.), and a software identifier. In addition,in some examples, the second communication also includes asoftware-based instruction that identifies an action and/or datatransfer that is to occur between ground computing devices and thesecond aircraft computing device.

In some examples, the second aircraft service causes the second aircraftcomputing device to transmit the second communication periodically,according to a schedule, and/or based on a trigger event, such as aninput from a user associated with the second aircraft (e.g., pilot,passenger, steward, etc.), a data file being generated, a data filereaching a preset size, an available amount of aircraft memory reachingor dropping below a threshold, occurrence of a preset event (e.g.,reaching a preset altitude, reaching a preset location, the aircraftbeing airborne for a preset amount of time, etc.), and/or reception of atransmission from an external computing device, such as the groundcomputing device, an aircraft interface computing device, a transientstorage location, or another computing device.

The second transmission is optionally received by the second aircraftinterface computing device at operation 530. In some examples, receivingthe second communication includes establishing a secure connectionbetween the second aircraft computing device and the second aircraftinterface computing device. In some embodiments, both the first aircraftinterface computing device and the second aircraft interface computingdevice receive the second communication, and it is determined that thesecond aircraft interface computing device is to establish a secureconnection with the second aircraft computing device.

At operation 532, the second aircraft interface computing deviceoptionally determines an aircraft classifier. For example, in someembodiments, in response to receiving the second communication, thesecond aircraft interface computing device determines an aircraftclassifier associated with at least one of the second aircraft, secondaircraft computing device, second aircraft service, or a combinationthereof. In some examples, an aircraft classifier corresponds to one ormore of a type of the second aircraft, a year of the second aircraft, anaircraft model of the second aircraft, an airline associated with thesecond aircraft, a type of computing device on which the second aircraftservice is executing, a type of service to which the second aircraftservice corresponds, or a combination thereof. In some examples, thesecond aircraft interface computing device determines the aircraftclassifier based on one or more aircraft identifiers included in thesecond communication. For example, in some embodiments, based on thesecond communication including a serial number of second aircraft, thesecond aircraft interface computing device accesses a data lookup tablethat indicates relationships between aircraft serial numbers and thecorresponding type of aircraft computing device and/or aircraft service.Alternatively, in other examples, the second aircraft interfacecomputing device transmits the one or more aircraft identifiers to aground computing device, which then accesses a data construct thatidentifies relationships between aircraft identifiers and/or aircraftclassifiers and corresponding aircraft computing devices, aircraftservices, and/or aircraft types. In some such examples, the groundcomputing device then transmits the aircraft classifiers associated withthe one or more aircraft identifiers to the second aircraft interfacecomputing device.

At operation 534, the second aircraft interface computing deviceoptionally selects an aircraft API. In some examples, the secondaircraft interface computing device is configured to select an aircraftAPI for communicating with the second aircraft computing device and/orsecond aircraft service executing thereon. In some examples, the secondaircraft interface computing device stores multiple aircraft APIs witheach aircraft API defining a programmatic protocol for communicatingwith a specific aircraft computing device and/or aircraft serviceexecuting thereon. In some embodiments, the second aircraft interfacecomputing device selects the appropriate aircraft API based on aschedule or table that indicates relationships between aircraftidentifiers and/or aircraft classifiers and corresponding aircraft APIs.In other embodiments, an appropriate aircraft API is automaticallyavailable and utilized for interaction with a corresponding aircraftservices as a result of the initial communication from the originatingaircraft.

At operation 536, the second aircraft interface computing deviceoptionally determines whether there is a command associated with thesecond communication. If the answer is yes (there is a commandassociated with the second communication), then the process continues tooperation 538, where the second aircraft interface computing devicetransmits a notification. For example, in some embodiments, the secondaircraft interface computing device transmits notifications that includeinformation configured to cause the command to be executed using theprogrammatic protocol to the second computing device, the groundcomputing device, or both. The command causes a data file to beexchanged between the second aircraft computing device and the groundcomputing device.

In embodiments where the command included in the second communicationindicates that a data file is to be exchanged between the secondaircraft interface computing device and the ground computing device, asecond aircraft API executing on the second aircraft interface computingdevice uses the selected programmatic protocol to facilitate a dataexchange between the ground computing device and the second aircraftcomputing device. For example, in some embodiments, the second aircraftinterface computing device uses the selected aircraft API to interfacewith a second aircraft service executing on the second aircraftcomputing device, and to cause the second aircraft service to performone or more actions to facilitate the data exchange.

At operation 514, the second aircraft computing device optionallyreceives the notification from the second aircraft interface computingdevice, and at operation 516, the second aircraft computing deviceexchanges the data file with the ground computing device. Additionally,as illustrated in FIG. 5, at operation 518, the ground computing deviceoptionally receives the notification from the second aircraft interfacecomputing device, and at operation 520, the ground computing deviceexchanges the data file with the second aircraft computing device.

If the answer at operation 536 is no (there is not a command associatedwith the second communication), then the process continues to operation540, where the second aircraft interface computing device determineswhether there is a pending command for the aircraft. If the answer isyes (there is a pending command for the second aircraft), then theprocess continues to operation 542, where the second aircraft interfacecomputing device causes the execution of the pending command tocontinue.

In some embodiments, the second aircraft interface computing devicedetermines that there is a pending command for the second aircraft bytransmitting a command request to the ground computing device, andreceiving a notification from the ground computing device that aprevious data exchange with the second aircraft computing device wasinterrupted and that it should be continued. In some examples, thenotification includes the information necessary to cause the secondaircraft interface computing device to continue the execution of thecommand, such as a name of the data file, an aircraft identifier, anaircraft classifier, an amount of the data file transferred, anidentification of the last portion of the data file that wastransferred, a storage location to which or from which the data file isto be transferred, etc. Alternatively or in addition, the secondaircraft interface computing device determines that there is a pendingcommand for the second aircraft based on metadata stored on one of thefirst aircraft interface computing device, the second aircraft interfacecomputing device, the ground computing device, or a transient storagelocation.

In some embodiments, the pending command corresponds to an exchange of adata file between the second aircraft computing device and a differentcomputing device (e.g., the first aircraft interface computing device, atransient storage location, etc.) over the air-to-ground network. Wherethe data transfer corresponds to a transmission of the data file fromthe second aircraft computing device to the ground computing device, insome examples, each of the first aircraft interface computing device andthe second aircraft interface computing device sends one or more portionof the data file that it received from the second aircraft computingdevice, and the ground computing device assembles the data file based onthe received portions.

If the answer at operation 540 is no (there is not a pending command forthe second aircraft), then the process continues to operation 544, wherethe second aircraft interface computing device transmits a message tothe ground computing device requesting a command associated with thesecond aircraft computing device. If the ground computing devicetransmits a response indicating a command that is to be executed withregard to the second aircraft computing device, the second aircraftinterface computing device performs one or more actions to cause theexecution of the command. Alternatively, if the ground computing devicetransmits a response indicating that there is not a command to beexecuted with regard to the second aircraft computing device, the secondaircraft interface computing device transmits a message to the secondaircraft computing device that no commands are to be executed at thistime.

FIG. 6 is a flowchart depicting methods 600, according to the presentdisclosure, for exchanging data files from an aircraft computing device106 to a ground computing device 102. As shown in FIG. 6, at operation602, the aircraft computing device transmits a communication. In someexamples, an aircraft service executing on the aircraft computing devicecauses a communication to be transmitted to one or more aircraftinterface computing devices. In some examples, the communication istransmitted over an air-to-ground network, such a wireless network, asatellite network, a cellular network, or other type of air-to-groundnetwork that allows uplinks/downlinks to facilitate data exchangesbetween an aircraft in flight and a ground-based computing device. Insome examples, the communication includes one or more identifiers thatare associated with the corresponding aircraft, aircraft computingdevice, aircraft API, or a combination thereof. In some examples, thecommunication includes one or more of an airline identifier (e.g., aninternational civil aviation organization (ICAO) code or aninternational air transport association (IATA) code, etc.), an airplaneidentifier (e.g., a tail number, a registration number, a manufacturernumber, a serial number, etc.), and a software identifier. In addition,in some examples, the communication also includes a software-basedinstruction that identifies an action and/or data transfer that is tooccur between ground computing devices and the aircraft computingdevice.

In some embodiments, the aircraft service causes the aircraft computingdevice to transmit the communication periodically, according to aschedule, and/or based on a trigger event, such as an input from a userassociated with the aircraft (e.g., pilot, passenger, steward, etc.), adata file being generated, a data file reaching a preset size, anavailable amount of the aircraft memory reaching or dropping below athreshold, occurrence of a preset event (e.g., reaching a presetaltitude, reaching a preset location, the aircraft being airborne for apreset amount of time, etc.), and/or reception of a transmission from anexternal computing device, such as the ground computing device, anaircraft interface computing device, a transient storage location, oranother computing device.

At operation 604, the aircraft interface computing device receives thecommunication. In some examples, receiving the communication includesestablishing a secure connection between the aircraft computing deviceand an aircraft interface computing device. In some embodiments, morethan one aircraft interface computing device receives the communication,and it is determined which one of the aircraft interface computingdevices is to establish a secure connection with the aircraft computingdevice.

At operation 606, the aircraft interface computing device optionallydetermines an aircraft classifier. For example, in response to receivingthe communication, in some examples, the aircraft interface computingdevice determines an aircraft classifier associated with at least one ofthe aircraft, aircraft computing device, aircraft service, or acombination thereof, from which the communication originated. In someexamples, an aircraft classifier corresponds to one or more of a type ofthe aircraft, a year of the aircraft, a model of the aircraft, anairline associated with the aircraft, a type of computing device onwhich the aircraft service is executing, a type of service to which theaircraft service corresponds, or a combination thereof.

In some examples, the aircraft interface computing device determines theaircraft classifier based on one or more aircraft identifiers includedin the communication. In some such examples, based on the communicationincluding a serial number from the originating aircraft, the aircraftinterface computing device accesses a data lookup table that indicatesrelationships between aircraft serial numbers and the corresponding typeof aircraft computing device and/or aircraft service. Alternatively, inother examples, the aircraft interface computing device transmits theaircraft identifier and/or aircraft classifier to a ground computingdevice, which then accesses a data construct that identifiesrelationships between aircraft identifiers and/or aircraft classifiersand corresponding aircraft computing devices, aircraft services, and/oraircraft types. The ground computing device then transmits thedetermined aircraft identifiers and/or aircraft classifiers to theaircraft interface computing device.

At operation 608, the aircraft interface computing device optionallyselects an appropriate aircraft API. Specifically, in some examples, theaircraft interface computing device is configured to select an aircraftAPI for communicating with the aircraft computing device and/or aircraftservice executing on the originating aircraft. In some examples, theaircraft interface computing device stores multiple aircraft APIs witheach aircraft API defining a programmatic protocol for communicatingwith a specific aircraft computing device and/or aircraft serviceexecuting thereon. The programmatic protocol of each aircraft API isconfigured to enable the aircraft interface computing device to interactwith one or more corresponding aircraft computing devices and/orcorresponding aircraft services. In some embodiments, the aircraftinterface computing device selects the appropriate aircraft API based ona schedule or table that indicates relationships between aircraftidentifiers and/or aircraft classifiers and corresponding aircraft APIs.In other embodiments, an appropriate aircraft API is automaticallyavailable and utilized for interaction with a corresponding aircraftservices as a result of the initial communication from the originatingaircraft.

At operation 610, it is determined that a data file is to be transmittedto the aircraft computing device from the ground computing device. Insome embodiments, the communication includes the command. In some suchexamples, the communication from the aircraft computing device indicatesthat a data file including aircraft health data is to be transmittedfrom the aircraft computing device to the ground computing device.

Alternatively, where the communication does not include a command, insome examples, the aircraft interface computing device determines that adata file is to be transferred to the ground computing device based on acommand queue maintained by the ground computing device. As illustratedin FIG. 6, this optionally includes a transmission of a queue request atoperation 612. In some examples, a queue request includes the aircraftidentifiers, aircraft classifiers, metadata that identifies theaircraft/aircraft computing device/aircraft service, or a combinationthereof.

In some examples, operation 610 includes a determination that a commandis in the command queue at optional operation 614. For example, in someexamples, the ground computing device is configured to receive queuerequests from the aircraft interface computing device, identify acommand queue that corresponds to data files that are to be exchangedwith the aircraft computing device, and determine that a command is in acommand queue associated with the aircraft computing device.

In some embodiments, determining that the command is in the commandqueue comprises the ground computing device dynamically generating acommand queue for the aircraft computing device. In some such examples,the ground computing device identifies a plurality of commands that areto be executed in relation to the particular aircraft computing device(i.e., from a pool of commands, from a plurality of command queues,etc.), and then dynamically generates a command queue for the particularaircraft computing device. In some examples, where the queue requestidentifies an airline type, aircraft type, and a geographic location ofthe associated aircraft, the ground computing device identifies commandsthat are to be executed with aircraft operated by the airline, withaircraft of the aircraft type, with aircraft within the geographiclocation, and/or a combination thereof. In some examples, the groundcomputing device then generates a command queue of the relevant commandsthat are to be executed with the particular aircraft computing deviceand an order in which they are to be executed. In some examples, theground computing device then uses the command queue to determine acommand that is to be executed with the aircraft computing device.

In some examples, operation 610 also includes transmitting anotification that the command is in the command queue at optionaloperation 616. In some such examples, the ground computing devicetransmits a notification to the aircraft interface computing device thatis configured to cause the aircraft interface computing device tofacilitate the execution of the command. In some examples, the signalsidentify a data file that is to be exchanged between the groundcomputing device and the particular aircraft computing device, alocation that the data file is to be transmitted from/to, securityand/or permissions information required to facilitate the exchange(e.g., passwords, security key, identifiers, etc.), or a combinationthereof.

At operation 618, a transient storage location is optionally selected.In some embodiments, the data file is exchanged between the aircraftcomputing device and the cloud computing resources via a transientstorage location. In some examples, a transient storage locationcorresponds to a data storage resource of a cloud computing network thatis configured to exchange data files between the ground computingdevices over the cloud computing network, and also exchange data filesbetween the aircraft computing devices over the air-to-ground network.In some embodiments, the cloud computing network includes a plurality oftransient storage locations through which data files can be routed.Individual transient storage locations may be geographically positionedso that they are more proximate to and/or have stronger connections toaircraft located in an associated geographic area.

In some examples, the transient storage location is selected from aplurality of transient storage locations by the ground computing device,the aircraft interface computing device, or a combination thereof. Insome examples, the transient storage location through which the datafile is to be transferred is selected based on the aircraft beinggeographically located within a threshold distance of the transientstorage location at the time the data file will be transferred to theaircraft computing device, a flight plan of the aircraft, anstrength/efficiency of the uplink/downlink connection between theaircraft computing device and the transient storage location during atleast a portion of the flight plan of the aircraft, or a combinationthereof.

At operation 620, the aircraft interface computing device transmits thecommand using the corresponding aircraft API. In some examples, anaircraft API executing on the aircraft interface computing device thenuses the selected aircraft API to initiate a data exchange from theaircraft computing device to the ground computing device. In this way,by quickly identifying or automatically selecting and deployingappropriate aircraft APIs across a wide range of aircraft types and/ortypes of aircraft services, the aircraft interface computing device isable to act as a decoupled interface that enables ground-based softwareservices to conduct communication and data exchanges with aircraftcomputing devices without the software services needing to beindividually programmed to communicate with each type of aircraft and/oraircraft service.

At operation 622, the aircraft computing device receives the commandfrom the aircraft interface computing device. In some examples, theaircraft computing device receives a communication that indicates thatthe data file is to be exchanged from the aircraft computing device toone or more ground computing devices. In some such examples, the commandincludes instructions and/or metadata that cause the aircraft computingdevice to initiate the transfer, such as a name of the data file, a typeof the data file, a size of the data file, security and/or permissionsinformation required to facilitate the exchange (e.g., passwords,security key, identifiers, etc.), a time stamp for the data file, a timestamp for the transfer, an airplane classifier, an airline identifier,an airplane identifier, a location of the aircraft, a location of thetransient storage location, and a unique storage location (e.g., a URL)to which and/or from which the data file to be transmitted, or acombination thereof. At operation 624, the aircraft computing deviceinitiates the transmission of the data file. In some examples, the datafile is transmitted directly to the ground computing device.Alternatively, it is transmitted via the aircraft interface computingdevice and/or a transient storage location.

At operation 626, the aircraft computing device determines whether thereis a break in communication during the transmission of the data file. Insome examples, a break in communication corresponds to a break in theconnection with the aircraft computing device over the air-to-groundnetwork during the transfer of the data file. If the answer is yes(there is a break in communication), then the process continues tooperation 602, where the aircraft interface computing device transmitsan additional communication. If the answer at operation 626 is no (thereis not a break in communication), then the process continues tooperation 628, where the ground computing device receives the data file.

At operation 630, the ground computing device determines whether thedata file was received in one piece. If the answer is yes (the data filewas received in one piece), then the process continues to operation 632,where the ground computing device optionally removes the command fromthe command queue. In some embodiments, when the command to transmit thedata file to the ground computing device is a repeating command, uponcompletion of the transmission of the data file, the ground computingdevice removes a first instance of the command from the command queueand add a new instance of the command that corresponds to the next timethe repeating command is to reoccur.

At operation 634, the ground computing device transmits a notificationthat the transmission of the data file is complete. In response toreceiving the notification, in some examples, the aircraft interfacecomputing device and/or a transient storage location deletes a localversion of the data file. If the answer at operation 630 is no (the datafile was received in more than one piece), then the process continues tooperation 636, where the ground computing device assembles the datafile. The process then continues at operation 634. For example, wherethe transmission of the data file is interrupted by a break incommunication, in some examples, the data file is transmitted to theground computing device in one or more pieces. In such a situation, theground computing device assembles one or more pieces into a completeversion of the data file.

FIG. 7 is a flowchart depicting methods 700, according to the presentdisclosure, for exchanging data files to an aircraft computing device106 and from a ground computing device 102.

As shown in FIG. 7, at operation 702, the aircraft computing devicetransmits a communication. For example, an aircraft service 130executing on the aircraft computing device, in some examples, causes acommunication to be transmitted to one or more aircraft interfacecomputing devices. In some such examples, the communication istransmitted over an air-to-ground network, such a wireless network, asatellite network, a cellular network, or other type of air-to-groundthat allows uplinks/downlinks to facilitate data exchanges between anaircraft in flight and a ground-based computing device. In someexamples, the communication includes one or more identifiers that areassociated with the corresponding aircraft, aircraft computing device,aircraft service, or a combination thereof. For example, in someexamples, the communication includes one or more of an airlineidentifier (e.g., an international civil aviation organization (ICAO)code or an international air transport association (IATA) code, etc.),an airplane identifier (e.g., a tail number, a registration number, amanufacturer number, a serial number, etc.), and a software identifier.In addition, in some examples, the communication also includes asoftware-based instruction that identifies an action and/or datatransfer that is to occur between ground computing devices and theaircraft computing device.

In some embodiments, the aircraft service causes the aircraft computingdevice to transmit the communication periodically, according to aschedule, and/or based on a trigger event, such as an input from a userassociated with the aircraft (e.g., pilot, passenger, steward, etc.), adata file being generated, a data file reaching a preset size, anavailable amount of the aircraft memory reaching or dropping below athreshold, occurrence of a preset event (e.g., reaching a presetaltitude, reaching a preset location, the aircraft being airborne for apreset amount of time, etc.), and/or reception of a transmission from anexternal computing device, such as the ground computing devices, anaircraft interface computing device, a transient storage location, oranother computing device.

At operation 704, the aircraft interface computing device receives thecommunication. In some examples, receiving the communication includesestablishing a secure connection between the aircraft computing deviceand an aircraft interface computing device. In some embodiments, morethan one aircraft interface computing device receives the communication,and it is determined that the aircraft interface computing device is toestablish a secure connection with the aircraft computing device.

At operation 706, the aircraft interface computing device optionallydetermines an aircraft classifier. For example, in some examples, inresponse to receiving the communication, the aircraft interfacecomputing device determines an aircraft classifier associated with atleast one of the aircraft, aircraft computing device, aircraft service,or a combination thereof, from which the communication originated. Insome examples, an aircraft classifier corresponds to one or more of atype of the aircraft, a year of the aircraft, a model of the aircraft,an airline associated with the aircraft, a type of computing device onwhich the aircraft service is executing, a type of service to which theaircraft service corresponds, or a combination thereof.

In some examples, the aircraft interface computing device determines theaircraft classifier based on one or more aircraft identifiers includedin the communication. In some examples, based on the communicationincluding a serial number from the originating aircraft, the aircraftinterface computing device accesses a data lookup table that indicatesrelationships between aircraft serial numbers and the corresponding typeof aircraft computing device and/or aircraft service. Alternatively, inother examples, the aircraft interface computing device transmits theaircraft identifier and/or aircraft classifier to a ground computingdevice, which then accesses a data construct that identifiesrelationships between aircraft identifiers and/or aircraft classifiersand corresponding aircraft computing devices, aircraft services, and/oraircraft types. In some such examples, the ground computing device thentransmits the determined aircraft identifiers and/or aircraftclassifiers to the aircraft interface computing device.

At operation 708, the aircraft interface computing device optionallyselects an appropriate aircraft API. Specifically, in some examples, theaircraft interface computing device is configured to select an aircraftAPI for communicating with the aircraft computing device and/or aircraftservice executing on the originating aircraft. In some examples, theaircraft interface computing device stores multiple aircraft APIs witheach aircraft API defining a programmatic protocol for communicatingwith a specific aircraft computing device and/or aircraft serviceexecuting thereon. The programmatic protocol of each aircraft API isconfigured to enable the aircraft interface computing device to interactwith one or more corresponding aircraft computing devices and/orcorresponding aircraft services. In some embodiments, the aircraftinterface computing device selects the appropriate aircraft API based ona schedule or table that indicates relationships between aircraftidentifiers and/or aircraft classifiers and corresponding aircraft APIs.In other embodiments, an appropriate aircraft API is automaticallyavailable and utilized for interaction with a corresponding aircraftservices as a result of the initial communication from the originatingaircraft.

At operation 710, the aircraft interface computing device optionallydetermines whether there is a pending data transfer to the aircraftcomputing device. In some examples, the pending command corresponds to apreviously initiated data transfer of the data file that was interruptedby a break in communication with the aircraft computing device over theair-to-ground network. In some embodiments, the aircraft interfacecomputing device determines that there is a pending command for theaircraft computing device by transmitting a queue request to the groundcomputing device, and receiving a notification from the ground computingdevice that a previous data exchange with the aircraft computing devicewas interrupted and that it should be continued. In some examples, thenotification includes the information necessary to cause the aircraftinterface computing device to continue the execution of the command,such as a name of the data file, an aircraft identifier, an aircraftclassifier, an amount of the data file transferred, an identification ofthe last portion of the data file that was transferred, a storagelocation to which and/or from which the data file is to be transferred,etc.

Alternatively or in addition, the aircraft interface computing devicedetermines that there is a pending command for the aircraft based onmetadata stored on one of the aircraft interface computing device, theground computing device, or a transient storage location. In someexamples, when a break in communication occurs, one or more computingdevices involved in the data transfer stores metadata that includesinformation about the data transfer, such as a name of the data file, anaircraft identifier, an aircraft classifier, an amount of the data filetransferred, an identification of the last portion of the data file thatwas transferred, a storage location to which and/or from which the datafile is to be transferred, etc. Thus, by accessing the metadata, theaircraft interface computing device is able to determine both that apending command for the aircraft computing device exists and theinformation necessary to resume the exchange of the corresponding datafile. In this way, the aircraft interface computing device is able tocause the execution of the command to continue from the point at whichthe break in communication occurred, reducing the amount of redundantdata that is transferred over the air-to-ground network.

If the answer at operation 710 is yes (there is a pending datatransfer), then the process continues to operation 712 and the cloudcomputing resource optionally causes the data transfer to continue.Alternatively, if the answer at operation 710 is no (there is not apending data transfer), then the process continues to operation 714,where the aircraft interface computing device transmits a notificationto the ground computing device. In some examples, the notificationcorresponds to a request to determine whether there is a command that isto be executed in association with the aircraft computing device.

At operation 716, the ground computing device determines that a datafile is to be transmitted from the aircraft computing device to theground computing device. As illustrated in FIG. 7, in some examples, theground computing device determines that the data file is to betransmitted in this way by optionally accessing a command queueassociated with the aircraft computing device at operation 718. In someexamples, the ground computing device is configured to receive queuerequests from the aircraft interface computing device, identify acommand queue that corresponds to data files that are to be exchangedwith the aircraft computing device, and determine that a command is in acommand queue associated with the aircraft computing device.

In some embodiments, determining that the command is in the commandqueue comprises the ground computing device dynamically generating acommand queue for the aircraft computing device. In some examples, theground computing device identifies a plurality of commands that are tobe executed in relation to the particular aircraft computing device(i.e., from a pool of commands, from a plurality of command queues,etc.), and then dynamically generate a command queue for the particularaircraft computing device. In some examples, where the queue requestidentifies an airline type, aircraft type, and a geographic location ofthe associated aircraft, the ground computing device identifies commandsthat are to be executed with aircraft operated by the airline, withaircraft of the aircraft type, with aircraft within the geographiclocation, and/or a combination thereof. In some examples, the groundcomputing device then generates a command queue of the relevant commandsthat are to be executed with the particular aircraft computing deviceand an order in which they are to be executed. In some examples, theground computing device then uses the command queue to determine acommand that is to be executed with the aircraft computing device.

FIG. 7 further illustrates process 700 as optionally including operation720, where the ground computing device receives a command to upload thedata file. In some examples, the command is received via user inputsinto a ground computing device (e.g., inputs provided via a keyboard,mouse, touchpad, camera, audio, etc.), a physical input to the groundcomputing device (e.g., a CD, DVD, software input, etc.), data inputsprovided to the ground computing device via the network interface (e.g.,input from a third party computing device, aircraft computing device,etc.), or a combination thereof. In some examples, a user enters one ormore identifiers and/or classifiers of one or more aircraft, and aselection of a data file that is to be exchanged between the groundcomputing device and the one or more aircraft computing devicesoperating on aircraft associated with the one or more identifiers and/orclassifiers. Alternatively or in addition, commands are generated by aservice module executing on the ground computing device. In someexamples, a service module that monitors flight conditions determinesthat the weather in a particular geographic region is hazardous, andgenerates and provides a command to transmit a warning of the hazardousweather and/or a new flight plan that avoids the hazardous weather tothe individual aircraft computing devices operating on aircraft withinthe geographic region.

At operation 722, the ground computing device receives the data file. Insome examples, the ground computing device is further executable toreceive the data files for upload to one or more aircraft computingdevices. In some embodiments, a data file is input directly into theground computing device via a user input such as by keyboard,touchscreen, mouse selection, etc. Alternatively, in other examples, thedata file is received by the ground computing device via a data transferfrom another computing device, such as from a third party computingdevice. In some examples, a computing device operated by an airline isthe third party computing device, and it receives a video file that isto be uploaded to the entertainment systems of aircraft in its fleet. Inanother example, a third party software provider that provides aircraftsoftware executing on an aircraft computing device transmits a softwareupdate for the aircraft software. Additionally, in some examples, theground computing device also receives a data file from the servicemodule. For example, in some examples, the ground computing devicestores a service module that is configured to generate, update, anddistribute flight plans to aircraft computing device. Such a servicemodule generates a new flight plan for an aircraft, and transmits thenew flight plan to the ground computing device for storage and ultimatedistribution to the aircraft computing device.

At operation 724, a transient storage location is optionally selected.In some embodiments, the data file is exchanged between the aircraftcomputing device and the cloud computing resources via a transientstorage location. In some examples, a transient storage locationcorresponds to a data storage resource of a cloud computing network thatis configured to exchange data files between the ground computingdevices over the network, and also exchange data files between theaircraft computing devices over the air-to-ground network. In someembodiments, the cloud computing network includes a plurality oftransient storage locations through which data files can be routed. Insome examples, individual transient storage locations are geographicallypositioned so that they are more proximate to and/or have strongerconnections to aircraft located in an associated geographic area.

In some examples, the transient storage location is selected from aplurality of transient storage locations by the ground computing device,the aircraft interface computing device, or a combination thereof. Insome examples, the transient storage location through which the datafile is to be transferred is selected based on the aircraft beinggeographically located within a threshold distance of the transientstorage location at the time the data file will be transferred to theaircraft computing device, a flight plan of the aircraft, anstrength/efficiency of the uplink/downlink connection between theaircraft computing device 106 and the transient storage location duringat least the portion of the flight plan of the aircraft, or acombination thereof.

At operation 726, the data file is transmitted. In some embodiments, thedata file is transmitted over a cloud computing network connection to anaircraft interface computing device or the transient storage connection,and then transmitted to the aircraft computing device over anair-to-ground connection from the aircraft interface computing device orthe transient storage connection. At operation 728, the aircraftcomputing device receives the data file.

At operation 730, the aircraft computing device determines whether thereis a break in communication during the transmission of the data file. Abreak in communication may correspond to a break in the connection withthe aircraft computing device over the air-to-ground network during thetransfer of the data file. If the answer is yes (there is a break incommunication), then the process continues to operation 702, where theaircraft computing device transmits an additional communication. If theanswer at operation 730 is no (there is not a break in communication),then the process continues to operation 732, where the aircraftcomputing device completes the transmission of the data file.

At operation 734, the aircraft computing device transmits a notificationthat the transmission of the transmission is complete, and at operation736, the ground computing device optionally removes the command from thecommand queue. In some embodiments, when the command to transmit thedata file to the ground computing device is a repeating command, uponcompletion of the transmission of the data file, the ground computingdevice removes a first instance of the command from the command queueand add a new instance of the command that corresponds to the next timethe repeating command is to reoccur.

FIG. 8 is a flowchart depicting methods 800, according to the presentdisclosure, for generating and maintaining a command queue forexchanging data files between an aircraft computing device 106 and aground computing device 102.

As shown in FIG. 8, at operation 802 the ground computing deviceoptionally receives a command. In some examples, the command is receivedvia user inputs into a ground computing device (e.g., inputs providedvia a keyboard, mouse, touchpad, camera, audio, etc.), a physical inputto the ground computing device (e.g., a CD, DVD, software input, etc.),data inputs provided to the ground computing device via the networkinterface (e.g., input from a third party computing device, aircraftcomputing device, etc.), or a combination thereof. For example, a usermay enter one or more identifiers and/or classifiers of one or moreaircraft, and a selection of a data file that is to be exchanged betweenthe ground computing device and the one or more aircraft computingdevices operating on aircraft associated with the one or moreidentifiers and/or classifiers. Alternatively or in addition, commandsare generated by a service module executing on the ground computingdevice. For example, a service module that monitors flight conditionsmay determine that the weather in a particular geographic region ishazardous, and may generate and provide a command to transmit a warningof the hazardous weather and/or a new flight plan that avoids thehazardous weather to the individual aircraft computing devices operatingon aircraft within the geographic region.

At operation 804, the ground computing device optionally receives a datafile. In some examples, the ground computing device is furtherexecutable to receive the data files for upload to one or more aircraftcomputing devices. In some embodiments, a data file is input directlyinto the ground computing device via a user input such as by keyboard,touchscreen, mouse selection, etc. Alternatively, the data file isreceived by the ground computing device via a data transfer from anothercomputing device, such as from a third party computing device. In someexamples, a computing device operated by an airline is the third partycomputing device, and it provide receives a video file that is to beuploaded to the entertainment systems of aircraft in its fleet. Inanother example, a third party software provider that provides aircraftsoftware executing on an aircraft computing device transmits a softwareupdate for the aircraft software. Additionally, in some examples, theground computing device also receives a data file from the servicemodule. In some examples, the ground computing device stores a servicemodule that is configured to generate, update, and distribute flightplans to aircraft computing device. Such a service module generates anew flight plan for an aircraft, and transmits the new flight plan tothe ground computing device for storage and ultimate distribution to theaircraft computing device.

At operation 808, the ground computing device optionally adds thecommand to a command queue associated with the aircraft computingdevice. In some examples, the ground computing device is configured togenerate and maintain one or more command queues. In some examples,maintaining a command queue involves adding new commands to the commandqueue, removing commands from the command queue once completed, updatinga status of a command within the command queue (e.g., pending,interrupted, etc.), reordering the commands in the command queue, or acombination thereof.

In some examples, at operation 806, in response to receiving a command,the ground computing device optionally identifies an aircraft computingdevice associated with the command, and then adds the command to acommand queue associated with the aircraft computing device.

At operation 810, the ground computing device accesses the command queueassociated with the aircraft computing device. In some examples, theground computing device is configured to receive queue requests from theaircraft interface computing device, identify a command queue thatcorresponds to data files that are to be exchanged with the aircraftcomputing device, and determine that a command is in a command queueassociated with the aircraft computing device. In some embodiments,determining that the command is in the command queue comprises theground computing device dynamically generating a command queue for theaircraft computing device. In some examples, the ground computing deviceidentifies a plurality of commands that are to be executed in relationto the particular aircraft computing device (i.e., from a pool ofcommands, from a plurality of command queues, etc.), and thendynamically generates a command queue for the particular aircraftcomputing device. For example, where the queue request identifies anairline type, aircraft type, and a geographic location of the associatedaircraft, in some examples, the ground computing device identifiescommands that are to be executed with aircraft operated by the airline,with aircraft of the aircraft type, with aircraft within the geographiclocation, and/or a combination thereof. In some examples, the groundcomputing device then generates a command queue of the relevant commandsthat are to be executed with the particular aircraft computing deviceand an order in which they are to be executed.

At operation 812, the aircraft computing device optionally transmits acommunication. In some examples, an aircraft service executing on theaircraft computing device causes a communication to be transmitted toone or more aircraft interface computing devices. In some examples, thecommunication is transmitted over an air-to-ground network, such as awireless network, a satellite network, a cellular network, or other typeof air-to-ground that allows uplinks/downlinks to facilitate dataexchanges between an aircraft in flight and a ground-based computingdevice. In some examples, the communication includes one or moreidentifiers that are associated with the corresponding aircraft,aircraft computing device, aircraft service, or a combination thereof.For example, in some examples, the communication includes one or more ofan airline identifier (e.g., an international civil aviationorganization (ICAO) code or an international air transport association(IATA) code, etc.), an airplane identifier (e.g., a tail number, aregistration number, a manufacturer number, a serial number, etc.), anda software identifier. In addition, in some examples, the communicationalso includes a software-based instruction that identifies an actionand/or data transfer that is to occur between ground computing deviceand the aircraft computing device.

In some embodiments, the aircraft service causes the aircraft computingdevice to transmit the communication periodically, according to aschedule, and/or based on a trigger event, such as an input from a userassociated with the aircraft (e.g., pilot, passenger, steward, etc.), adata file being generated, a data file reaching a preset size, anavailable amount of the aircraft memory reaching or dropping below athreshold, occurrence of a preset event (e.g., reaching a presetaltitude, reaching a preset location, the aircraft being airborne for apreset amount of time, etc.), and/or reception of a transmission from anexternal computing device, such as the ground computing devices, anaircraft interface computing device, a transient storage location, oranother computing device.

At operation 814, the aircraft interface computing device optionallyreceives the communication. Receiving the communication may includeestablishing a secure connection between the aircraft computing deviceand an aircraft interface computing device. In some embodiments, morethan one aircraft interface computing devices receive the communication,and it is determined which one of the aircraft interface computingdevices is to establish a secure connection with the aircraft computingdevice. In some embodiments, the aircraft interface computing devicealso determines an aircraft classifier associated with the aircraftcomputing device, and/or selects an aircraft API for communication withan aircraft service executing on the aircraft computing device.

At operation 816, the aircraft interface computing device optionallydetermines whether there is a command associated with the communication.If the answer at operation 816 is no (there is not a command associatedwith the communication), then the process continues to operation 820 andthe aircraft interface computing device optionally transmits a queuerequest. In some examples, the queue request includes the aircraftidentifiers, aircraft classifiers, and/or metadata that identifies theaircraft, the aircraft computing device, the aircraft service, or acombination thereof. Alternatively, if the answer at operation 816 isyes (there is a command associated with the communication), then theprocess continues to operation 818, where the aircraft interfacecomputing device optionally transmits a notification. In some examples,the aircraft interface computing device transmits a notification thatincludes information configured to cause the command associated with thecommunication to be executed. In some examples, the notification isconfigured to cause a data file to be exchanged between the aircraftcomputing device and the ground computing device.

At operation 822, the ground computing device determines that a commandis to be executed. In some examples, the ground computing device usesthe command queue to determine a command that is to be executed with theaircraft computing device.

At operation 824, a transient storage location is optionally selected.In some embodiments, the data file may be exchanged between the aircraftcomputing device and the aircraft interface computing device via atransient storage location. In some examples, a transient storagelocation corresponds to a data storage resource of cloud computingnetwork that is configured to exchange data files between the groundcomputing devices over the network, and also exchange data files betweenthe aircraft computing devices over the air-to-ground network. In someembodiments, the cloud computing network includes a plurality oftransient storage locations through which data files can be routed.Individual transient storage locations may be geographically positionedso that they are more proximate to and/or have stronger connections toaircraft located in an associated geographic area.

In some examples, the transient storage location is selected from aplurality of transient storage locations by the ground computing device,the aircraft interface computing device, or a combination thereof. Insome examples, the transient storage location through which the datafile is to be transferred is selected based on the aircraft beinggeographically located within a threshold distance of the transientstorage location at the time the data file will be transferred to theaircraft computing device, a flight plan of the aircraft, anstrength/efficiency of the uplink/downlink connection between theaircraft computing device and the transient storage location during atleast a portion of the flight plan of the aircraft, or a combinationthereof.

At operation 826, the ground computing device causes the command to beexecuted. In some examples, the ground computing device performs one ormore actions to cause a data file to be exchanged between the groundcomputing device and an aircraft computing device. Then, at operation828, the ground computing device determines that the execution of thecommand has finished, and optionally updates the queue associated withthe aircraft at operation 830. In some examples, updating the queuecorresponds to removing the command, or, where the command is to berepeated, the ground computing device removes the command and then addsa new instance of the command that corresponds to the next occasion thatthe command is to be executed.

At operation 832, the ground computing device determines whether thereis another command to be executed. If the answer is yes (there isanother command to be executed), then the process returns to operation826, where the ground computing device causes the command to beexecuted. However, if the answer at operation 832 is no (there is notanother command to be executed), then the process continues to operation834, where the ground computing device optionally sends a notificationthat there is no command in the queue associated with the aircraft tothe aircraft interface computing device, the aircraft computing device,or both.

The methods 400, 500, 600, 700, and 800 are described with reference tothe environment 100 and computing devices 200 and 300 of FIGS. 1-3 forconvenience and ease of understanding. However, the methods 400, 500,600, 700, and 800 are not limited to being performed using theenvironment 100 and/or computing devices 200 and 300. Moreover, theenvironment 100 and computing devices 200 and 300 are not limited toperforming the methods 400, 500, 600, 700, and 800.

The methods 400, 500, 600, 700, and 800 are illustrated as collectionsof blocks in logical flow graphs, which represent sequences ofoperations that may be implemented in hardware, software, or acombination thereof. In the context of software, the blocks representcomputer-executable instructions stored on one or more computer-readablestorage media that, when executed by one or more processors, perform therecited operations. Generally, computer executable instructions includeroutines, programs, objects, components, data structures, and the likethat perform particular functions or implement particular abstract datatypes. The order in which the operations are described is not intendedto be construed as a limitation, and any number of the described blocksmay be combined in any order and/or in parallel to implement themethods. In some embodiments, one or more blocks of the method may beomitted entirely. Moreover, the methods 400, 500, 600, 700, and 800 maybe combined in whole or in part.

The various techniques described herein may be implemented in thecontext of computer-executable instructions or software that are storedin computer-readable storage and executed by the processor or processorsof one or more computers or other devices such as those illustrated inthe figures. Generally, program modules include routines, programs,objects, components, data structures, etc., and define operating logicfor performing particular tasks or implement particular abstract datatypes. As used herein, the term “module” when used in connection withsoftware or firmware functionality may refer to code or computer programinstructions that are integrated to varying degrees with the code orcomputer program instructions of other such “modules.” The distinctnature of the different modules described and depicted herein is usedfor explanatory purposes and should not be used to limit the scope ofthis disclosure.

Other architectures may be used to implement the describedfunctionality, and are intended to be within the scope of thisdisclosure. Furthermore, although specific distributions ofresponsibilities are defined above for purposes of discussion, thevarious functions and responsibilities might be distributed and dividedin different ways, depending on circumstances.

Similarly, software may be stored and distributed in various ways andusing different means, and the particular software storage and executionconfigurations described above may be varied in many different ways.Thus, software implementing the techniques described above may bedistributed on various types of computer-readable media and not limitedto the forms of memory that are specifically described.

Illustrative, non-exclusive examples of inventive subject matteraccording to the present disclosure are described in the followingenumerated paragraphs:

A1. A computing method for data exchanges between an aircraft computingdevice and a ground computing device, the method comprising:

receiving, by an aircraft interface computing device, an initialcommunication from an aircraft service executing on the aircraftcomputing device located onboard an aircraft;

determining, based on the initial communication, an aircraft classifierassociated with at least one of the aircraft service, the aircraftcomputing device, and the aircraft;

selecting, by the aircraft interface computing device and based on theaircraft classifier, an aircraft API for communicating with the aircraftservice from a plurality of aircraft APIs, wherein each of the aircraftAPIs allows the aircraft interface computing device to communicate withone or more of corresponding aircraft services, corresponding aircraftcomputing devices, or corresponding aircraft;

transmitting, by the aircraft interface computing device, one or morefirst communications to the ground computing device; and

transmitting, by the aircraft interface computing device and using theaircraft API, one or more second communications to the aircraft service,wherein the one or more first communications and the one or more secondcommunications cause a data file to be exchanged between the groundcomputing device and the aircraft computing device.

A1.1. The method of paragraph A1, wherein the ground computing device isconfigured to exchange the data file with one or more aircraft computingdevices within a service region, wherein the service region comprises aplurality of service sub-regions.

A1.1.1. The method of paragraph A1.1, wherein the service region is aglobal region.

A2. The method of any of paragraphs A1-A1.1.1, wherein each aircraft APIof the plurality of aircraft APIs is executable on a plurality ofaircraft interface computing devices.

A2.1. The method of paragraph A2, wherein each aircraft interfacecomputing device of the plurality of aircraft interface computing deviceis located in a corresponding service sub-region of the plurality ofservice sub-regions.

A2.2. The method of any paragraphs A1-A2.1, wherein the aircraftinterface computing device is geographically located in a remotelocation from the ground computing device.

A2.2.1. The method of paragraph A2.2, wherein the aircraft is within afirst service region during the transmission of the initialcommunication.

A3. The method of any of paragraphs A1-A2.1, wherein the initialcommunication is transmitted from the aircraft service to the aircraftinterface computing device over a first communications medium, and theone or more first communications are transmitted from the aircraftinterface computing device to the ground computing device over a secondcommunications medium that is different from the first communicationsmedium.

A3.1. The method of paragraph A3, wherein the first communicationsmedium is one of a wireless network, a satellite network, and a cellularnetwork.

A3.2. The method of any of paragraphs A3-A3.1, wherein the secondcommunications medium is the internet.

A3.3. The method of any of paragraphs A3-A3.1, wherein the secondcommunications medium is a cloud computing network.

A4. The method of any of paragraphs A1-A3.3, wherein the receiving theinitial communication from the aircraft service comprises establishing asecure connection between the aircraft computing device and the aircraftinterface computing device.

A5. The method of any of paragraphs A1-A4, wherein the aircraft is inflight during the transmission of the initial communication.

A6. The method of any of paragraphs A1-A5, wherein the aircraftinterface computing device is an infrastructure component of a cloudcomputing network.

A7. The method of any of paragraphs A1-A6, wherein the initialcommunication includes one or more identifiers for the aircraft, theaircraft computing device, and/or the aircraft service.

A7.1. The method of paragraph A7, wherein the one or more identifiersinclude an airline identifier and/or an airplane identifier.

A7.1.1. The method of paragraph A7.1, wherein the airline identifiercomprises one of an international civil aviation organization (ICAO)code or an international air transport association (IATA) code.

A7.1.2. The method of any of paragraphs A7.1-A7.1.1, wherein theairplane identifier comprises one of a tail number, a registrationnumber, a manufacturer number, and a serial number.

A8. The method of any of paragraphs A1-A7.1.2, wherein the receiving theinitial communication includes a command.

A8.1. The method of paragraph A8, wherein the command corresponds to arequest to exchange the data file between the ground computing deviceand the aircraft computing device.

A9. The method of any of paragraphs A1-A8.1, wherein the receiving theinitial communication is responsive to a prior transmission from theaircraft API.

A9.1. The method of paragraph A9, wherein the initial communication istransmitted periodically by the aircraft service.

A9.2. The method of paragraph A9, wherein the initial communication istransmitted to a plurality of aircraft interface computing devicesproximate to the aircraft at the time of transmission.

A9.2.1. The method of paragraph A9.2, further comprising determiningthat the aircraft interface computing device is the most efficientcomputing resource for communicating with the aircraft.

A10. The method of any of paragraphs A1-A9.2.1, wherein the aircraftclassifier corresponds to one or more of a type of the aircraft, a yearof the aircraft, a model of the aircraft, an airline associated with theaircraft, a type of computing device on which the aircraft service isexecuting, a type of service to which the aircraft service corresponds,or a combination thereof.

All. The method of any of paragraphs A1-A10, wherein the determining theaircraft classifier comprises accessing a data construct that identifiesthe aircraft classifier.

A11.1. The method of paragraph A11, wherein the data construct is alookup table that stores relationships between the one or moreidentifiers and the aircraft classifier.

A12. The method of any of paragraphs A1-A10, wherein the determining theaircraft classifier comprises transmitting the one or more identifiersincluded in the initial communication to the ground computing device,and receiving the aircraft classifier from the ground computing device.

A13. The method of any of paragraphs A1-A12, wherein the one or morefirst communications and the one or more second communications cause thedata file to be exchanged between the ground computing device and theaircraft computing device by transmitting the data file from theaircraft computing device to the ground computing device.

A14. The method of any of paragraphs A1-A12, wherein transmitting thedata file corresponds to transmitting the data file from the aircraftcomputing device to a central storage location associated with theground computing device.

A14.1. The method of paragraph A14, wherein the central storage locationsegregates stored data according to the aircraft classifiers.

A15. The method of any of paragraphs A1-A14.1, wherein the data fileincludes a security log, a performance log, health monitoring data,and/or a system log.

A16. The method of any of paragraphs A1-A15, wherein the one or morefirst communications and the one or more second communications cause thedata file to be exchanged between the ground computing device and theaircraft computing device by transmitting the data file to a third partystorage location associated with the ground computing device.

A17. The method of any of paragraphs A1-A12, wherein the one or morefirst communications and the one or more second communications cause thedata file to be exchanged between the ground computing device and theaircraft computing device by transmitting the data file from the groundcomputing device to the aircraft computing device.

A17.1. The method of paragraph A17, wherein the one or more firstcommunications and the one or more second communications cause the datafile to be exchanged between the ground computing device and theaircraft computing device by transmitting the data file from the centralstorage location associated with the ground computing device to theaircraft computing device.

A18. The method of any of paragraphs A1-A17.1, wherein the data fileincludes a software update and/or a flight plan.

A19. The method of any of paragraphs A1-A18, wherein the data file isexchanged between the ground computing device and the aircraft computingdevice via a transient storage location.

A19.1. The method of paragraph A19, wherein the transient storagelocation is associated with the aircraft interface computing device.

A20. The method of any of paragraphs A1-A19.1, further comprisingreceiving an additional initial communication from the aircraft servicebased on a break in communication between the aircraft computing deviceand the aircraft interface computing device.

A20.1. The method of paragraph A20, wherein the additional initialcommunication is received by the aircraft API executing on the aircraftinterface computing device.

A20.2. The method of paragraph A20, wherein the aircraft API device is afirst aircraft API executing on a first aircraft interface computingdevice, and the additional initial communication is received by a secondaircraft API executing on a second aircraft interface computing device.

A20.2.1. The method of paragraph A20.2, wherein the second aircraftinterface computing device is geographically located remotely from thefirst aircraft interface computing device.

A20.3. The method of any of paragraphs A20-A20.2.1, further comprisingdetermining the aircraft classifier based on the additional initialcommunication, and selecting the programmatic protocol based on theaircraft classifier.

A21. The method of any of paragraphs A1-A20.3, further comprisingdetermining that an exchange of the data file was interrupted by thebreak in communication, and causing the exchange of the data filebetween the ground computing device and the aircraft computing device tocontinue.

A22. The method of any of paragraphs A1-A21, wherein the transmittingthe one or more first communications includes transmitting to the groundcomputing device a request to exchange the data file between theaircraft computing device and the ground computing device.

A22.1. The method of paragraph A22, wherein the transmitting the one ormore first communications includes transmitting the aircraft classifierand the one or more identifiers to the ground computing device, andwherein the ground computing device is configured to determine, based onthe aircraft classifier and the one or more identifiers, that the datafile is to be transmitted between the ground computing device and theaircraft computing device.

A22.1.1. The method of paragraph A22.1, further comprising determining,by the ground computing device, that the data file is to be exchangedbetween the ground computing device and the aircraft computing device byaccessing a command queue associated with the aircraft.

A22.1.1.1. The method of paragraph A22.1.1, wherein the ground computingdevice hosts and/or maintains the command queue in an accessible storagelocation.

A23. The method of any of paragraphs A1-A22.1.1.1, wherein the initialcommunication is a first initial communication from a first aircraftservice executing on a first aircraft computing device located onboard afirst aircraft, and the method further comprises receiving, by theaircraft interface computing device, a second initial communication froma second aircraft service executing on a second aircraft computingdevice located onboard a second aircraft.

A23.1. The method of paragraph A23, further comprising determining,based on the second initial communication, that the aircraft classifieris associated with at least one of the second aircraft service, thesecond aircraft computing device, and the second aircraft.

A23.1.1. The method of paragraph A23.1, further comprising selecting, bythe aircraft interface computing device and based on the aircraftclassifier, a second aircraft API for communicating with the secondaircraft service from the plurality of aircraft APIs.

A23.2. The method of paragraph A23, wherein the aircraft classifier is afirst aircraft classifier, and the method further comprisingdetermining, based on the second initial communication, that a secondaircraft classifier is associated with at least one of the secondaircraft service, the second aircraft computing device, and the secondaircraft, wherein the second aircraft classifier is different from thefirst aircraft classifier.

A23.2.1. The method of paragraph A23.2, further comprising selecting, bythe aircraft interface computing device and based on the second aircraftclassifier, the second aircraft API for communicating with the secondaircraft service from the plurality of aircraft APIs.

A23.2.2. The method of paragraph A23.2, wherein the aircraft API is afirst aircraft API, and the method further comprises selecting, by theaircraft interface computing device and based on the second aircraftclassifier, a second aircraft API for communicating with the secondaircraft service from the plurality of aircraft APIs, wherein the secondaircraft API is different from the first aircraft API.

B1. A computing method for data exchanges between an aircraft computingdevice on an aircraft and a ground computing device, the methodcomprising:

receiving, by the ground computing device, a data transmission from anaircraft interface computing device located remotely from the groundcomputing device, the data transmission indicating that a data file isto be exchanged between the ground computing device and the aircraftcomputing device in communication with the aircraft interface computingdevice; and exchanging the data file between the ground computing deviceand the aircraft computing device utilizing an aircraft API executing onthe aircraft interface computing device, wherein the aircraft API is oneof a plurality of aircraft APIs stored on the aircraft interfacecomputing device, and wherein each of the plurality of aircraft APIs areconfigured for communicating with unique aircraft services executing onunique aircraft computing devices.

B1.1. The method of paragraph B1, wherein the ground computing device isconfigured to exchange the data file with the aircraft computing devicewithin a service region, wherein the service region comprises aplurality of service sub-regions.

B1.1.1. The method of paragraph B1.1, wherein the service region is aglobal region.

B2. The method of any of paragraphs B1-B1.1.1, wherein the aircraftinterface computing device is one of a plurality of aircraft interfacecomputing devices.

B2.1. The method of paragraph B2, wherein each aircraft interfacecomputing device of the plurality of aircraft interface computing deviceis located in a corresponding service sub-region of a/the plurality ofservice sub-regions.

B3. The method of any of paragraphs B1-B2.1, wherein the groundcomputing device receiving the data transmission from the aircraftinterface computing device located in the service sub-region correspondsto receiving a first data transmission from a first aircraft interfacecomputing device located in a first service sub-region, the first datatransmission indicating that a first data file is to be exchangedbetween the ground computing device and a first aircraft computingdevice in communication with the first aircraft interface computingdevice.

B3.1. The method of paragraph B3, further comprising:

receiving, by the ground computing device, a second data transmissionfrom a second aircraft interface computing device located in a secondservice sub-region, wherein the second service sub-region is differentfrom the first service sub-region, and the second data transmissionindicating that a second data file is to be exchanged between the groundcomputing device and a second aircraft computing device in communicationwith the second aircraft interface computing device; and

exchanging, the second data file between the ground computing device andthe second aircraft computing device utilizing an aircraft API executingon the second aircraft interface computing device.

B3.2. The method of paragraph B3, further comprising:

receiving, by the ground computing device, a second data transmissionfrom the first aircraft interface computing device, the second datatransmission indicating that a third data file is to be exchangedbetween the ground computing device and a second aircraft computingdevice in communication with the second aircraft interface computingdevice; and

exchanging, the third data file between the ground computing device andthe second aircraft computing device utilizing the aircraft APIexecuting on the second aircraft interface computing device.

B4. The method of any of paragraphs B1-B3.2, wherein the aircraftinterface computing device is geographically located in a remotelocation from the ground computing device.

B4.1. The method of paragraph B4, wherein the aircraft is located withina threshold distance of a geographic location of the aircraft interfacecomputing device during a transmission of an initial communicationbetween the aircraft and the aircraft interface computing device.

B5. The method of any of paragraphs B1-B4.1, wherein the data fileincludes a security log, a performance log, health monitoring data,and/or a system log.

B6. The method of any of paragraphs B1-B5, wherein the data fileincludes a software update and/or a flight plan.

B7. The method of any of paragraphs B1-B6, wherein the data transmissionis received from the aircraft interface computing device in response tothe aircraft interface computing device receiving an/the initialcommunication from the aircraft.

B8. The method of any of paragraphs B1-B7, wherein the aircraft is inflight during the transmission of an/the initial communication.

B9. The method of any of paragraphs B1-B8, wherein an/the initialcommunication is transmitted from the aircraft to the aircraft interfacecomputing device over a first communications medium, and the datatransmission is transmitted from the aircraft interface computing deviceto the ground computing device over a second communications medium thatis different from the first communications medium.

B9.1. The method of paragraph B9, wherein the first communicationsmedium is one of a wireless network, a satellite network, and a cellularnetwork.

B9.2. The method of any of paragraphs B9-B9.1, wherein the secondcommunications medium is the internet.

B9.3. The method of any of paragraphs B9-B9.1, wherein the secondcommunications medium is a cloud computing network.

B9.3.1. The method of paragraph B9.3, wherein the aircraft interfacecomputing device is an infrastructure component of the cloud computingnetwork.

B10. The method of any of paragraphs B9-B9.3.1, further comprisingreceiving, from the aircraft interface computing device and by theground computing device, one or more identifiers associated with theaircraft.

B10.1. The method of paragraph B10, wherein the one or more identifiersare associated with the aircraft, the aircraft computing device, and/oran aircraft service executing on the aircraft computing device.

B10.2. The method of any of paragraphs B10-B10.1, wherein the one ormore identifiers include an airline identifier and/or an airplaneidentifier.

B10.2.1. The method of paragraph B10.2, wherein the airline identifiercomprises one of an international civil aviation organization (ICAO)code or an international air transport association (IATA) code.

B10.2.2. The method of any of paragraphs B10.2-B10.2.1, wherein theairplane identifier comprises one of a tail number, a registrationnumber, a manufacturer number, and a serial number.

B11. The method of any of paragraphs B1-B10.2.2, further comprisingreceiving, from the aircraft interface computing device and by theground computing device, an aircraft classifier associated with theaircraft.

B12. The method of any of paragraphs B1-B11, further comprisingdetermining an aircraft classifier associated with a/the airplaneidentifier.

B12.1. The method of paragraph B12, wherein the determining the aircraftclassifier comprises accessing a data construct that identifies theaircraft classifier.

B12.1.1. The method of paragraph B12.1, wherein the data construct is alookup table that stores relationships between the one or moreidentifiers and the aircraft classifier.

B13. The method of any of paragraphs B11-B12.1.1, wherein the aircraftclassifier corresponds to one or more of a type of the aircraft, a yearof the aircraft, a model of the aircraft, an airline associated with theaircraft, a type of the aircraft computing device, a type of aircraftservice executing on the aircraft computing device, or a combinationthereof.

B14. The method of any of paragraphs B1-B13, wherein the exchanging thedata file corresponds to:

receiving the data file from the aircraft computing device; and

storing the data file on the ground computing device.

B14.1. The method of paragraph B14, wherein the ground computing devicesegregates stored data according to the aircraft classifiers.

B14.2. The method of any of paragraphs B14-B14.1, further comprisingstoring the data file in a portion of the ground computing deviceassociated with a/the aircraft classifier associated with the aircraft.

B15. The method of any of paragraphs B1-B13, wherein the exchanging thedata file corresponds to:

receiving the data file from the aircraft computing device; and

storing the data file in a third party storage location associated withthe ground computing device.

B16. The method of any of paragraphs B1-B13, wherein the exchanging thedata file corresponds to transmitting the data file from the groundcomputing device to the aircraft computing device.

B17. The method of any of paragraphs B1-B16, wherein the data file isexchanged between the ground computing device and the aircraft computingdevice via a transient storage location.

B17.1. The method of paragraph B17, wherein the transient storagelocation is associated with the aircraft interface computing device.

B18. The method of any of paragraphs B1-B17.1, further comprisingreceiving an additional data transmission based on a break incommunication between the aircraft computing device and the aircraftinterface computing device.

B18.1. The method of paragraph B18, wherein the additional datatransmission is received from the aircraft interface computing device.

B18.2. The method of paragraph B18, wherein the aircraft interfacecomputing device is a first aircraft interface computing device, and theadditional data transmission is received from a second aircraftinterface computing device.

B18.2.1. The method of paragraph B18.2, wherein the second aircraftinterface computing device is located in a different service sub-regionthan the first aircraft interface computing device.

B19. The method of any of paragraphs B1-B18.2.1, further comprisingdetermining, by the ground computing device, the data file is to betransmitted between the ground computing device and the aircraftcomputing device by accessing a command queue associated with theaircraft.

B19.1. The method of paragraph B19, wherein the ground computing devicehosts and/or maintains the command queue in an accessible storagelocation.

B19.2. The method of any of paragraphs B19-B19.1, further comprising:

determining that the data file has been exchanged between the groundcomputing device and the aircraft computing device;

determining, based on the command queue, that another data file is to beexchanged between the ground computing device and the aircraft computingdevice based on the command queue; and

exchanging the other data file between the ground computing device andthe aircraft computing device.

C1. A computing method for data transmissions from an aircraft computingdevice on an aircraft to a ground computing device, the methodcomprising:

receiving, by an aircraft API executing on an aircraft interfacecomputing device, an initial communication from an aircraft serviceexecuting on the aircraft computing device;

determining, by the aircraft API, that a data file is to be transmittedfrom the aircraft computing device to the ground computing device;

transmitting, to the aircraft computing device, a data signal configuredto cause the data file to be transmitted from the aircraft computingdevice to a transient storage location associated with the aircraftinterface computing device; and

causing the data file to be transmitted from the transient storagelocation to the ground computing device.

C1.1. The method of paragraph C1, wherein the ground computing device isconfigured to exchange the data file with the aircraft computing devicewithin a service region, wherein the service region comprises aplurality of service sub-regions.

C1.1.1. The method of paragraph C1.1, wherein the service region is aglobal region.

C2. The method of any of paragraphs C1-C1.1.1, wherein the transientstorage location is geographically located in a remote location from theground computing device.

C2.1. The method of paragraph C2, wherein the aircraft interfacecomputing device is located in a first service sub-region of a/theplurality of service sub-regions, and the transient storage location islocated in a second service sub-region of the plurality of servicesub-regions that is different from the first service sub-region.

C2.1.1. The method of paragraph C2.1, wherein the aircraft interfacecomputing device is geographically located in a remote location from theground computing device.

C2.1.2. The method of paragraph C2.1, wherein the aircraft interfacecomputing device is geographically located within a threshold distanceof the transient storage location.

C3. The method of any of paragraphs C1-C2.1.2, wherein the aircraft APIis one of a plurality of aircraft APIs, and wherein each aircraft API ofthe plurality of aircraft APIs executes on a plurality of aircraftinterface computing devices.

C3.1. The method of paragraph C3, wherein each aircraft interfacecomputing device of the plurality of aircraft interface computingdevices is located in a different service sub-region of a/the pluralityof service sub-regions.

C4. The method of any of paragraphs C1-C3.1, wherein the aircraftinterface computing device is an infrastructure component of a cloudcomputing network.

C5. The method of any of paragraphs C1-C4, wherein the data fileincludes a security log, a performance log, health monitoring data,and/or a system log.

C6. The method of any of paragraphs C1-C5, wherein the initialcommunication includes one or more identifiers for the aircraft, theaircraft computing device, and/or the aircraft service.

C6.1. The method of paragraph C6, wherein the one or more identifiersinclude an airline identifier and/or an airplane identifier.

C6.1.1. The method of paragraph C6.1, wherein the airline identifiercomprises one of an international civil aviation organization (ICAO)code or an international air transport association (IATA) code.

C6.1.2. The method of any of paragraphs C6.1-C6.1.1, wherein theairplane identifier comprises one of a tail number, a registrationnumber, a manufacturer number, and a serial number.

C7. The method of any of paragraphs C1-C6.1.2, further comprisingdetermining, based on the initial communication, an aircraft classifierassociated with at least one of the aircraft service, the aircraftcomputing device, and the aircraft.

C7.1. The method of paragraph C7, wherein the aircraft classifiercorresponds to one or more of a type of the aircraft, a year of theaircraft, a model of the aircraft, an airline associated with theaircraft, a type of computing device on which the aircraft service isexecuting, a type of service to which the aircraft service corresponds,or a combination thereof.

C7.2. The method of any of paragraphs C7-C7.1, wherein the determiningthe aircraft classifier comprises accessing a data construct thatidentifies the aircraft classifier.

C7.2.1. The method of paragraph C7.2, wherein the data construct is alookup table that stores relationships between the one or moreidentifiers and the aircraft classifier.

C7.3. The method of any of paragraphs C7-C7.1, wherein the determiningthe aircraft classifier comprises transmitting a/the one or moreidentifiers included in the initial communication to the groundcomputing device and receiving the aircraft classifier from the groundcomputing device.

C8. The method of any of paragraphs C7-C7.3, further comprisingselecting, by the aircraft interface computing device and based on theaircraft classifier, the aircraft API for communicating with theaircraft service from a plurality of aircraft APIs, wherein eachaircraft API of the plurality of aircraft APIs is configured tocommunicate with a unique aircraft service of a unique aircraftcomputing device.

C9. The method of any of paragraphs C1-C8, wherein the initialcommunication includes a command to transmit the data file from theaircraft computing device to the ground computing device, and whereinthe determining that the data file is to be transmitted from theaircraft computing device to the ground computing device is based on thecommand.

C10. The method of any of paragraphs C1-C8, wherein the determining thatthe data file is to be transmitted from the aircraft computing device tothe ground computing device comprises:

transmitting, by the aircraft interface computing device, the aircraftclassifier and the one or more identifiers to the ground computingdevice; and

receiving, from the ground computing device, a notification that thedata file is to be transmitted from the aircraft computing device to theground computing device.

C10.1. The method of paragraph C10, further comprising determining, bythe ground computing device, that the data file is to be exchangedbetween the ground computing device and the aircraft computing device byaccessing a command queue associated with the aircraft.

C10.1.1. The method of paragraph C10.1, wherein the ground computingdevice hosts and/or maintains the command queue in an accessible storagelocation.

C11. The method of any of paragraphs C1-C10.1, wherein the initialcommunication is a downlink communication.

C12. The method of any of paragraphs C1-C11, further comprisingdetermining that the data file has been completely stored in thetransient storage location, and wherein the data file is transmittedfrom the transient storage location to the ground computing device basedon the data file being completely stored in the transient storagelocation.

C13. The method of any of paragraphs C1-C12, wherein the transientstorage location is a data storage resource of a cloud computingnetwork.

C14. The method of any of paragraphs C1-C13, wherein the causing thedata file to be transmitted from the transient storage locationcorresponds to causing the data file to be transmitted from thetransient storage location to a third party storage location associatedwith the ground computing device.

C15. The method of any of paragraphs C1-C14, wherein the causing thedata file to be transmitted from the transient storage locationcomprises:

determining a location the data file is to be stored in the groundcomputing device; and

causing the data file to be transmitted to the location in the groundcomputing device.

C15.1. The method of paragraph C15, wherein the determining the locationthe data file is to be stored in the ground computing device comprises:

transmitting, by the aircraft interface computing device, one or more ofthe one or more identifiers and the aircraft classifier to the groundcomputing device; and

receiving, by the aircraft interface computing device and from theground computing device, a uniform resource identifier (URI) for thelocation the data file is to be stored in the ground computing device;and

causing the data file to be transmitted to the location in the groundcomputing device based on the URI.

C15.1.1. The method of paragraph C15.1, wherein the URI identifies astorage container associated with the one or more identifiers and/or theaircraft classifier.

C15.1.2. The method of any of paragraphs C15-C15.1.1, wherein the URIidentifies a storage container associated with the airline that operatesthe aircraft.

C16. The method of any of paragraphs C1-C15.1.2, further comprisingdetermining that the data file is to be transmitted from the aircraftcomputing device to the ground computing device via the transientstorage location.

C16.1. The method of paragraph C16, wherein the determining that thedata file is to be transmitted from the aircraft computing device to theground computing device via the transient storage location comprisesselecting the transient storage location from a plurality of transientstorage locations.

C16.2. The method of any of paragraphs C16-C16.1, wherein thedetermining that the data file is to be transmitted via the transientstorage location comprises determining that the transient storagelocation is geographically located within a threshold distance of theaircraft.

C16.3. The method of any of paragraphs C16-C16.2, wherein thedetermining that the data file is to be transmitted via the transientstorage location is based on the airline identifier and/or the airplaneidentifier.

C16.4. The method of any of paragraphs C16-C16.1, wherein thedetermining that the data file is to be transmitted via the transientstorage location comprises:

transmitting the airline identifier and/or the airplane identifier tothe ground computing device; and

receiving, from the ground computing device and based on the airlineidentifier and/or the airplane identifier, an identification of aselected transient storage location.

C16.5. The method of any of paragraphs C16-C16.4, wherein thedetermining that the data file is to be transmitted via the transientstorage location is based on an airplane link type between the aircraftand the aircraft interface computing device.

C16.5.1. The method of paragraph C16.5, wherein the airplane link typeis one of a Wi-Fi link, a cellular link, or a satellite link.

C16.6. The method of any of paragraphs C16-C16.5.1, wherein thedetermining that the data file is to be transmitted via the transientstorage location is based on a file size of the data file, an onboardsystem type of the aircraft computing device, and/or hardwarecapabilities of the aircraft computing device.

C16.7. The method of any of paragraphs C16-C16.6, wherein thedetermining that the data file is to be transmitted via the transientstorage location is based on a performance of the cloud computingnetwork and/or a performance of the aircraft interface computing device.

C17. The method of any of paragraphs C1-C16.7, further comprisingdeleting the data file from the transient storage location.

C17.1. The method of paragraph C17, wherein the deleting the data filefrom the transient storage location is based on receiving a datatransmission from the ground computing device corresponding to anotification the data file has been fully transmitted.

C18. The method of any of paragraphs C1-C17.1, further comprising:

receiving a notification the data file is to be transferred from theaircraft computing device and the ground computing device via adifferent aircraft interface computing device and/or a differenttransient storage location; and

causing the aircraft computing device to transmit the data file to theground computing device via the different aircraft interface computingdevice and/or the different transient storage location.

C19. The method of any of paragraphs C1-C18, wherein the transientstorage location receives the data file in component subparts, and themethod further comprises aggregating the component subparts to form thedata file.

C20. The method of any of paragraphs C1-C18, wherein the transientstorage location receives the data file in component subparts, and thetransmitting the data file from the transient storage location to theground computing device comprises transmitting the component subpartsfrom the transient storage location to the ground computing device,wherein the ground computing device is configured to aggregate thecomponent subparts to form the data file.

C21. The method of any of paragraphs C1-C20, further comprising:

determining metadata for the initial communication; and

transmitting a notification to the ground computing device that includesthe metadata for the initial communication.

C21.1. The method of paragraph C21, wherein the metadata for the initialcommunication includes one or more of a name of the data file, a type ofthe data file, a size of the data file, a time stamp for the data file,a time stamp for the transfer, an airplane classifier, the airlineidentifier, the airplane identifier, a location of the aircraft, alocation of the transient storage location, and a URL for the data filein the transient storage location.

C21.2. The method of any of paragraphs C21-C21.1, further comprisingstoring the metadata for the initial communication.

C21.3. The method of any of paragraphs C21-C21.2, further comprisingtagging the data file with the metadata for the initial communication.

C22. The method of any of paragraphs C1-C21.3, further comprising:

receiving an additional initial communication from the aircraftinterface computing device based on a break in communication between theaircraft computing device and the aircraft interface computing devicethat interrupted the transmission of the data file from the aircraftcomputing device to the transient storage location; and

resuming the transmission of the data file from the aircraft computingdevice to the transient storage location.

C22.1. The method of paragraph C22, wherein the break in communicationto the aircraft computing device corresponds to losing a networkconnection.

C22.2. The method of paragraph C22, wherein the break in communicationcorresponds to a failure of the aircraft interface computing device.

C22.3. The method of paragraph C22, wherein the break in communicationcorresponds to a failure of the transient storage location.

C22.4. The method of any of paragraphs C22-C22.3, wherein the resumingthe transmission of the data file from the aircraft computing device tothe transient storage location comprises determining the transientstorage is available, and transmitting a notification to the aircraftthat causes the transmission of the data file from the aircraftcomputing device to the transient storage location to resume.

C22.4.1. The method of paragraph C22.4, wherein the resuming thetransmission of the data file from the aircraft computing device to thetransient storage location is based on the metadata for the initialcommunication stored by the aircraft interface computing device.

C22.4.2. The method of paragraph C22.4, wherein the resuming thetransmission of the data file from the aircraft computing device to thetransient storage location comprises:

transmitting the metadata for the additional initial communication tothe ground computing device;

receiving, based on the metadata for the initial communication stored bythe ground computing device, a notification from the ground computingdevice that the transmission of the data file is to be continued; and

resuming the transmission of the data file from the aircraft computingdevice to the transient storage based on the notification that thetransmission of the data file is to be continued.

C22.4.2.1. The method of paragraph C22.4.2, wherein the notificationincludes one or more of a status of the data file, a size of the datafile stored on the transient storage location, and a location of thedata file on the transient storage location.

C23. The method of any of paragraphs C22-C22.4.2.1, wherein theadditional initial communication is received by the aircraft interfacecomputing device.

C24. The method of any of paragraphs C22-C22.4.2.1, wherein the aircraftAPI is a first aircraft API executing on a first aircraft interfacecomputing device, and the additional initial communication is receivedby a second aircraft API executing on a second aircraft interfacecomputing device.

C24.1. The method of paragraph C24, wherein the second aircraftinterface computing device is located in a different service sub-regionthan the first aircraft interface computing device.

C25. The method of any of paragraphs C1-C24.1, further comprisingselecting an alternate transient storage location, and causing aremaining portion of the data file to be transmitted from the aircraftcomputing device to the alternate transient storage location.

C25.1. The method of paragraph C25, wherein the selecting the alternatetransient storage location is based on one or more of a new geographiclocation of the aircraft, performance data for the transient storagelocation, performance data for the alternate transient storage location,a failure of the transient storage location, performance data for theconnection between the ground computing device and the transient storagelocation, performance data for the connection between the groundcomputing device and the alternate transient storage location, a type ofconnection between the aircraft computing device and the transientstorage location, and a type of connection between the aircraftcomputing device and the alternate transient storage location.

C25.2. The method of any of paragraphs C25-C25.1, wherein the selectingthe alternate transient storage location comprises selecting thealternate transient storage location from a plurality of alternatetransient storage locations.

C26. The method of any of paragraphs C1-C25.2, further comprising:

receiving, by the aircraft interface computing device, an additionalinitial communication from an additional aircraft service executing onan additional aircraft computing device located onboard an additionalaircraft;

determining, by the aircraft interface computing device, that anadditional data file is to be transmitted from the additional aircraftcomputing device to the ground computing device;

transmitting, to the additional aircraft computing device, an additionaldata signal configured to cause the additional data file to betransmitted from the additional aircraft computing device to thetransient storage location; and

causing the additional data file to be transmitted from the transientstorage location to the ground computing device.

C27. The method of any of paragraphs C1-C265.2, further comprising:

receiving, by the aircraft interface computing device, a further initialcommunication from an additional aircraft service executing on anadditional aircraft computing device located onboard an additionalaircraft;

determining, by the aircraft interface computing device, that anadditional data file is to be transmitted from the additional aircraftcomputing device to the ground computing device;

transmitting, to the additional aircraft computing device, an additionaldata signal configured to cause the additional data file to betransmitted from the additional aircraft computing device to anadditional transient storage location that is different from thetransient storage location; and causing the additional data file to betransmitted from the additional transient storage location to the groundcomputing device.

C28. The method of any of paragraphs C1-C27, wherein the initialcommunication is transmitted from the aircraft service to the aircraftinterface computing device over a first communications medium, and oneor more first communications are transmitted from the aircraft interfacecomputing device to the ground computing device over a secondcommunications medium that is different from the first communicationsmedium.

C28.1. The method of paragraph C28, wherein the first communicationsmedium is one of a wireless network, a satellite network, and a cellularnetwork.

C28.2. The method of any of paragraphs C28-C28.1, wherein the secondcommunications medium is the internet.

C28.3. The method of any of paragraphs C28-C28.1, wherein the secondcommunications medium is a cloud computing network.

C29. The method of any of paragraphs C1-C28.3, wherein the receiving theinitial communication from the aircraft service comprises establishing asecure connection between the aircraft computing device and the aircraftinterface computing device.

C30. The method of any of paragraphs C1-C29, wherein the aircraft is inflight during the transmission of the initial communication.

D1. A computing method for data exchanges between an aircraft computingdevice executing an aircraft service on an aircraft and a groundcomputing device, the method comprising:

receiving, by the ground computing device, a data transmission from anaircraft interface computing device and in communication with theaircraft computing device, the data transmission indicating that a datafile is to be transmitted from the aircraft computing device to theground computing device; and

receiving, by the ground computing device, the data file from theaircraft computing device via a transient storage location associatedwith the aircraft interface computing device.

D1.1. The method of paragraph D1, wherein the ground computing device isconfigured to exchange the data file with one or more aircraft computingdevices within a service region, wherein the service region comprises aplurality of service sub-regions.

D1.1.1. The method of paragraph D1.1, wherein the service region is aglobal region.

D2. The method of any of paragraphs D1-D1.1.1, wherein the transientstorage location is a data storage resource of a cloud network.

D2.1. The method of paragraph D2, wherein receiving the data file fromthe aircraft computing device via the transient storage locationcorresponds to the ground computing device receiving the data file fromthe transient storage location over the cloud network.

D3. The method of any of paragraphs D1-D2.1, wherein the receiving thedata file from the aircraft computing device via the transient storagelocation comprises causing the data file to be transmitted from thetransient storage location to a central storage location associated withthe ground computing device.

D4. The method of paragraph D1, wherein the transient storage locationis geographically located in a remote location from the ground computingdevice.

D4.1. The method of paragraph D4, wherein the aircraft interfacecomputing device is located in a first service sub-region of a/theplurality of service sub-regions, and the transient storage location islocated in a second service sub-region of the plurality of servicesub-regions that is different from the first service sub-region.

D4.1.1. The method of paragraph D4.1, wherein the aircraft interfacecomputing device is geographically located in a remote location from theground computing device.

D4.1.2. The method of paragraph D4.1, wherein the aircraft interfacecomputing device is geographically located within a threshold distanceof the transient storage location.

D5. The method of any of paragraphs D1-D4.1.2, wherein the aircraft APIis one of a plurality of aircraft APIs, and wherein each aircraft API ofthe plurality of aircraft APIs executes on a plurality of aircraftinterface computing devices.

D5.1. The method of paragraph D5, wherein each aircraft interfacecomputing device of the plurality of aircraft interface computingdevices is located in a different service sub-region of a/the pluralityof service sub-regions.

D6. The method of any of paragraphs D1-D5.1, further comprisingdetermining that the data file is to be transmitted via the transientstorage location.

D6.1. The method of paragraph D6, wherein the determining that the datafile is to be transmitted via the transient storage location comprisesselecting a selected transient storage location from a plurality oftransient storage locations.

D6.2. The method of any of paragraphs D6-D6.1, wherein the determiningthat the data file is to be transmitted via the transient storagelocation is based on the ground computing device determining thetransient storage location is geographically located within a thresholddistance of the aircraft.

D6.3. The method of any of paragraphs D6-D6.2, wherein the determiningthat the data file is to be transmitted via the transient storagelocation is based on an airline identifier and/or an airplane identifierof the aircraft.

D6.3.1. The method of paragraph D6.3, wherein the determining that thedata file is to be transmitted via the transient storage locationcomprises:

receiving the airline identifier and/or the airplane identifier from theaircraft interface computing device;

determining, based on the airline identifier and/or the airplaneidentifier, the selected transient storage location through which thedata file is to be transmitted; and

transmitting, to the aircraft interface computing device, anidentification of the selected transient storage location.

D6.4. The method of any of paragraphs D6-D6.3.1, wherein the determiningthat the data file is to be transmitted via the transient storagelocation is based on an airplane link type between the aircraft and theaircraft interface computing device.

D6.4.1. The method of paragraph D6.4, wherein the airplane link type isone of a Wi-Fi link, a cellular link, or a satellite link.

D6.5. The method of any of paragraphs D6-D6.4.1, wherein the determiningthat the data file is to be transmitted via the transient storagelocation is based on a file size of the data file, an onboard systemtype of the aircraft computing device, and/or hardware capabilities ofthe aircraft computing device.

D6.6. The method of any of paragraphs D6-D6.5, wherein the determiningthat the data file is to be transmitted via the transient storagelocation is based on a performance of the cloud computing network and/ora performance of the aircraft interface computing device.

D7. The method of any of paragraphs D1-D6.6, further comprising:

determining a remaining portion of the data file is to be transferredfrom the aircraft computing device to the ground computing device via adifferent transient storage location; and

transmitting a notification the remaining portion of the data file is tobe transferred from the aircraft computing device to the groundcomputing device via the different transient storage location.

D7.1. The method of paragraph D7, wherein the determining the remainingportion of the data file is to be transferred from the aircraftcomputing device to the ground computing device via the differenttransient storage location is based on one or more of a new geographiclocation of the aircraft, performance data for the transient storagelocation, performance data for an alternate transient storage location,a failure of the transient storage location, performance data for theconnection between the ground computing device and the transient storagelocation, performance data for the connection between the groundcomputing device and the alternate transient storage location, a type ofconnection between the aircraft computing device and the transientstorage location, and a type of connection between the aircraftcomputing device and the alternate transient storage location.

D8. The method of any of paragraphs D1-D7.1, wherein receiving the datafile from the aircraft computing device via the transient storagelocation comprises:

receiving the data file in component subparts; and

aggregating, by the ground computing device, the component subparts toform the data file.

D8.1. The method of paragraph D8, wherein the receiving the data file inthe component subparts comprises receiving the component subparts of thedata file from a plurality of transient storage locations.

D9. The method of any of paragraphs D1-D8.1, further comprising:

determining that the data file has been transmitted to the groundcomputing device; and

transmitting, to the aircraft interface computing device, a notificationthe data file has been transferred from the aircraft computing device tothe ground computing device, wherein the notification that the data filehas been transferred is configured to cause the data file to be deletedfrom the transient storage location.

D10. The method of any of paragraphs D1-D9, further comprising receivinga notification from the aircraft interface computing device thatincludes metadata for the data file.

D10.1. The method of paragraph D10, wherein the metadata for the datafile includes one or more of a name of the data file, a type of the datafile, a size of the data file, a time stamp for the data file, a timestamp for the transfer, an airplane classifier, the airline identifier,the airplane identifier, a location of the aircraft, a location of thetransient storage location, and a URL for the data file in the transientstorage location.

D10.2. The method of any of paragraphs D10-D10.1, further comprisingstoring the metadata for the data file.

D10.3. The method of any of paragraphs D10-D10.2, further comprisingtagging the data file with the metadata.

D11. The method of any of paragraphs D1-D10.3, wherein the groundcomputing device receiving the data transmission from the aircraftinterface computing device located in the service sub-region correspondsto receiving a first data transmission from a first aircraft interfacecomputing device located in a first service sub-region of a/theplurality of service sub-regions, the first data transmission indicatingthat a first data file is to be transmitted from a first aircraftcomputing device in communication with the first aircraft interfacecomputing device to the ground computing device.

D11.1. The method of paragraph D11, further comprising receiving, by theground computing device, a second data transmission from a secondaircraft interface computing device located in a second servicesub-region of the plurality of service sub-regions, wherein the secondservice sub-region is different from the first service sub-region, andthe second data transmission indicating that a second data file is to betransmitted from a second aircraft computing device in communicationwith the second aircraft interface computing device to the groundcomputing device.

D11.1.1. The method of paragraph D11.1, further comprising receiving, bythe ground computing device, the second data file from the secondaircraft computing device via the transient storage location.

D11.1.2. The method of any of paragraphs D11.1-D11.1.1, furthercomprising receiving, by the ground computing device, the second datafile from the second aircraft computing device via the alternatetransient storage location that is located in a different servicesub-region from the transient storage location.

D11.2. The method of paragraph D11, further comprising receiving, by theground computing device, a second data transmission from the firstaircraft interface computing device, the second data transmissionindicating that a third data file is to be transmitted from a secondaircraft computing device in communication with the first aircraftinterface computing device to the ground computing device.

D11.2.1. The method of paragraph D11.2, further comprising receiving, bythe ground computing device, the third data file from the secondaircraft computing device via the transient storage location.

D11.2.2. The method of any of paragraphs D11.2-D11.2.1, furthercomprising receiving, by the ground computing device, the third datafile from the second aircraft computing device via the alternatetransient storage location that is located in the different servicesub-region from the transient storage location.

D12. The method of any of paragraphs D1-D11.2.2, wherein the data fileincludes one or more of a security log, a performance log, healthmonitoring data, and/or a system log.

D13. The method of any of paragraphs D1-D12, wherein the datatransmission is received from the aircraft interface computing device inresponse to the aircraft interface computing device receiving an initialcommunication from the aircraft.

D14. The method of any of paragraphs D1-D13, wherein the aircraft is inflight during a transmission of the data file from the aircraftcomputing device to the transient storage location.

D15. The method of any of paragraphs D1-D14, wherein the data file istransmitted from the aircraft to the transient storage location over afirst communications medium, and the data transmission is transmittedfrom the transient storage location to the ground computing device overa second communications medium that is different from the firstcommunications medium.

D15.1. The method of paragraph D15, wherein the first communicationsmedium is one of a wireless network, a satellite network, and a cellularnetwork.

D15.2. The method of any of paragraphs D15-D15.1, wherein the firstcommunications medium is a downlink communication medium.

D15.3. The method of any of paragraphs D15-D15.2, wherein the secondcommunications medium is the internet.

D15.4. The method of any of paragraphs D15-D15.2, wherein the secondcommunications medium is a cloud computing network.

D16. The method of any of paragraphs D1-D15.4, wherein the aircraftinterface computing device is an infrastructure component of a cloudcomputing network.

D17. The method of any of paragraphs D1-D16, further comprisingreceiving, from the aircraft interface computing device and by theground computing device, one or more identifiers associated with theaircraft.

D17.1. The method of paragraph D17, wherein the one or more identifiersare associated with the aircraft, the aircraft computing device, and/orthe aircraft service.

D17.2. The method of any of paragraphs D17-D17.1, wherein the one ormore identifiers include an airline identifier and/or an airplaneidentifier.

D17.2.1. The method of paragraph D17.2, wherein the one or more airlineidentifiers comprise one or more of an international civil aviationorganization (ICAO) code or an international air transport association(IATA) code.

D17.2.2. The method of any of paragraphs D17.1-D17.2.1, wherein theairplane identifier comprises one of a tail number, a registrationnumber, a manufacturer number, and a serial number.

D18. The method of any of paragraphs D1-D17.2.2, further comprisingdetermining an aircraft classifier associated with the aircraft.

D18.1. The method of paragraph D18, wherein the determining the aircraftclassifier comprises receiving, from the aircraft interface computingdevice and by the ground computing device, the aircraft classifierassociated with the aircraft.

D18.2. The method of paragraph D18, wherein the determining the aircraftclassifier comprises determining, by the ground computing device, theaircraft classifier is based at least in part on the airplaneidentifier.

D18.2.1. The method of paragraph D18.2, wherein the determining theaircraft classifier comprises accessing a data construct that identifiesthe aircraft classifier.

D18.2.1.1. The method of paragraph D18.2.1, wherein the data constructis a lookup table that stores relationships between the one or moreidentifiers and the aircraft classifier.

D18.3. The method of any of paragraphs D18-D18.2.1.1, wherein thedetermining the aircraft classifier comprises:

receiving, from the aircraft interface computing device, the one or moreidentifiers and/or the aircraft classifier;

determining a storage location where the data file is to be stored inthe central storage location; and

transmitting, to the aircraft interface computing device and by theground computing device, a uniform resource identifier (URI) for thestorage location where the data file is to be stored in the centralstorage location.

D18.3.1. The method of paragraph D18.3, wherein the URI identifies astorage container associated with the one or more identifiers and/or theaircraft classifier.

D18.3.2. The method of any of paragraphs D18.3-D18.3.1, wherein the URIidentifies a/the storage container associated with an airline thatoperates the aircraft.

D18.4. The method of any of paragraphs D18-D18.3.2, wherein the aircraftclassifier corresponds to one or more of a type of the aircraft, a yearof the aircraft, a model of the aircraft, the airline associated withthe aircraft, a type of aircraft computing device on which the aircraftservice is executing and communicating to a aircraft API to which theaircraft service corresponds, or a combination thereof.

D19. The method of any of paragraphs D1-D18.4, wherein exchanging thedata file corresponds to:

receiving the data file from the aircraft computing device; and

storing the data file in the central storage location.

D19.1. The method of paragraph D19, wherein the central storage locationsegregates stored data according to the aircraft classifier.

D19.1.1. The method of paragraph D19.1, further comprising storing thedata file in a portion of the central storage location associated withthe aircraft classifier associated with the aircraft.

D20. The method of any of paragraphs D1-D19.1.1, wherein thetransmission of the data file corresponds to:

receiving the data file from the aircraft computing device;

determining that the data file is associated with a third party; and

transmitting the data file for storage in a third party storage locationassociated with the ground computing device.

D20.1. The method of paragraph D20, wherein the determining that thedata file is associated with the third party is based on one or more ofthe aircraft classifier and the one or more identifiers associated withthe aircraft.

D21. The method of any of paragraphs D1-D20.1, further comprising:

receiving an additional data transmission based on a break incommunication between the aircraft computing device and the aircraftinterface computing device and/or the transient storage location, theadditional data transmission indicating that a remaining portion of thedata file is to be transmitted from the aircraft computing device to theground computing device; and

resuming the transmission of the data file from the aircraft computingdevice to the ground computing device.

D21.1. The method of paragraph D21, wherein the break in communicationcorresponds to the aircraft computing device losing a networkconnection.

D21.2. The method of paragraph D21, wherein the break in communicationcorresponds to a failure of the aircraft interface computing device.

D21.3. The method of paragraph D21, wherein the break in communicationcorresponds to a failure of the transient storage location.

D21.4. The method of any of paragraphs D21-D21.3, wherein the resumingthe transmission of the data file from the aircraft computing device tothe ground computing device further comprises determining that thetransient storage location is available and resuming the transmission ofthe data file from the aircraft computing device to the transientstorage location.

D21.5. The method of any of paragraphs D21-D21.4, wherein the resumingthe transmission of the data file from the aircraft computing device tothe transient storage location is based on a/the metadata for the datafile.

D21.6. The method of any of paragraphs D21-D21.5, wherein the resumingthe transmission of the data file from the aircraft computing device tothe ground computing device comprises transmitting to the aircraftinterface computing device a notification that includes one or more of astatus of the data file, a size of the data file stored on the transientstorage location, and a location of the data file on the transientstorage location.

D21.7. The method of any of paragraphs D21-D21.6, wherein the additionaldata transmission is received from the aircraft interface computingdevice.

D21.8. The method of any of paragraphs D21-D21.6, wherein the aircraftinterface computing device is a first aircraft interface computingdevice, and the additional data transmission is received from a secondaircraft interface computing device.

D21.8.1. The method of paragraph D21.8, wherein the second aircraftinterface computing device is located in a different service sub-regionthan the first aircraft interface computing device.

D22. The method of any of paragraphs D1-D21.8.1, wherein the receivingthe data transmission from the aircraft interface computing deviceindicating that the data file is to be transmitted from the aircraftcomputing device to the ground computing device comprises:

receiving, from the aircraft interface computing device and by theground computing device, one or more of the aircraft classifier and theone or more identifiers associated with the aircraft;

determining, by the ground computing device, the data file is to betransmitted from the aircraft computing device to the ground computingdevice based on the one or more of the aircraft classifier and the oneor more identifiers associated with the aircraft; and

transmitting, to the aircraft interface computing device and by theground computing device, a notification the data file is to betransmitted from the aircraft computing device to the ground computingdevice.

D22.1. The method of paragraph D22, wherein the determining that thedata file is to be transmitted from the aircraft computing device to theground computing device comprises accessing, by the ground computingdevice, a command queue associated with the aircraft.

D23. The method of any of paragraphs D1-D22.1, further comprisingdetermining, by the ground computing device, that an additional datafile is to be exchanged between the central storage location and theaircraft computing device by accessing the command queue associated withthe aircraft.

D24. The method of any of paragraphs D1-D23, further comprising:

determining that the data file has been transmitted from the aircraftcomputing device to the ground computing device; and

determining, based on the command queue, that another data file is to beexchanged between the central storage location and the aircraftcomputing device; and

exchanging the other data file between the central storage location andthe aircraft computing device.

D24.1. The method of paragraph D24, wherein the ground computing devicehosts and/or maintains the command queue in an accessible storagelocation.

E1. A computing method for data transmissions from an aircraft computingdevice on an aircraft to a ground computing device, the methodcomprising:

receiving, by an aircraft API executing on an aircraft interfacecomputing device, an initial communication from an aircraft serviceexecuting on the aircraft computing device;

determining, by the aircraft API, that a data file is to be transmittedfrom the ground computing device to the aircraft computing device;

transmitting, to the ground computing device, a data signal configuredto cause the data file to be transmitted from the ground computingdevice to a transient storage location associated with the aircraftinterface computing device; and

causing the data file to be transmitted from the transient storagelocation to the aircraft computing device.

E1.1. The method of paragraph E1, wherein the ground computing device isconfigured to exchange the data file with one or more aircraft computingdevices within a service region, wherein the service region comprises aplurality of service sub-regions.

E1.1.1. The method of paragraph E1.1, wherein the service region is aglobal region.

E2. The method of any of paragraphs E1-E1.1.1, wherein the transientstorage location is geographically located in a remote location from theground computing device.

E2.1. The method of paragraph E2, wherein the aircraft interfacecomputing device is geographically located within a threshold distanceof the transient storage location.

E2.1.1. The method of paragraph E2.1, wherein the aircraft interfacecomputing device is geographically located in a remote location from theground computing device.

E3. The method of any of paragraphs E1-E2.1.1, wherein the aircraftinterface computing device is an infrastructure component of a cloudcomputing network.

E4. The method of any of paragraphs E1-E3, wherein the data fileincludes a security log, a performance log, health monitoring data,and/or a system log.

E5. The method of any of paragraphs E1-E4, wherein the initialcommunication includes one or more identifiers for the aircraft, theaircraft computing device, and/or the aircraft service.

E5.1. The method of paragraph E5, wherein the one or more identifiersinclude an airline identifier and/or an airplane identifier.

E5.1.1. The method of paragraph E5.1, wherein the airline identifiercomprises one of an international civil aviation organization (ICAO)code or an international air transport association (IATA) code.

E5.1.2. The method of paragraph E5.1, wherein the airplane identifiercomprises one of a tail number, a registration number, a manufacturernumber, and a serial number.

E6. The method of any of paragraphs E1-E5.1.2, wherein the aircraft APIis one of a plurality of aircraft APIs, and wherein each aircraft API ofthe plurality of aircraft APIs executes on a plurality of aircraftinterface computing devices.

E6.1. The method of paragraph E6, wherein each aircraft interfacecomputing device of the plurality of aircraft interface computingdevices is located in a corresponding service sub-region of a/theplurality of service sub-regions.

E7. The method of any of paragraphs E1-E6.1, further comprisingdetermining, based on the initial communication, an aircraft classifierassociated with at least one of the aircraft service, the aircraftcomputing device, and the aircraft.

E7.1. The method of paragraph E7, further comprising selecting, by theaircraft interface computing device and based on the aircraftclassifier, the aircraft API for communicating with the aircraft servicefrom a plurality of aircraft APIs, wherein each of the aircraft APIsallows the aircraft interface computing device to communicate with oneor more of corresponding aircraft services, corresponding aircraftcomputing devices, or corresponding aircraft.

E7.2. The method of any of paragraphs E7-E7.1, wherein the aircraftclassifier corresponds to one or more of a type of aircraft, a year ofthe aircraft, a model of the aircraft, an airline associated with theaircraft, a type of computing device on which the aircraft service isexecuting, a type of service to which the aircraft service corresponds,or a combination thereof.

E7.3. The method of any of paragraphs E7-E7.2, wherein the determiningthe aircraft classifier is based on one or more identifiers for theaircraft, the aircraft computing device, and/or the aircraft service.

E7.4. The method of any of paragraphs E7-E7.3, further comprisingaccessing a data construct that identifies the aircraft classifier.

E7.4.1. The method of paragraph E7.4, wherein the data construct is alookup table that stores relationships between one or more identifiersfor the aircraft, the aircraft computing device, and/or the aircraftservice and the aircraft classifier.

E7.5. The method of any of paragraphs E7-E7.3, wherein the determiningthe aircraft classifier comprises:

transmitting the one or more identifiers included in the initialcommunication to the ground computing device; and

receiving the aircraft classifier from the ground computing device.

E8. The method of any of paragraphs E1-E7.5, wherein the initialcommunication includes a command to transmit the data file from theground computing device to the aircraft computing device and wherein thedetermining that the data file is to be transmitted from the groundcomputing device to the aircraft computing device is based on thecommand.

E9. The method of any of paragraphs E7-E7.5, wherein the determiningthat the data file is to be transmitted from the ground computing deviceto the aircraft computing device comprises:

transmitting, by the aircraft interface computing device, the aircraftclassifier and one or more identifiers for the aircraft, the aircraftcomputing device, and/or the aircraft service to the ground computingdevice; and

receiving, from the ground computing device, a notification thatindicates that the data file is to be transmitted from the groundcomputing device to the aircraft computing device.

E9.1. The method of paragraph E9, further comprising determining, by theground computing device, that the data file is to be transmitted fromthe ground computing device to the aircraft computing device byaccessing a command queue associated with the aircraft.

E9.1.1. The method of paragraph E9.1, wherein the ground computingdevice hosts and/or maintains the command queue in an accessible storagelocation.

E10. The method of any of paragraphs E1-E9.1.1, wherein the initialcommunication is a downlink communication.

E11. The method of any of paragraphs E1-E10, wherein the transientstorage location is a data storage resource of a cloud computingnetwork.

E11.1. The method of paragraph E11, wherein the transmitting the datafile to the transient storage location comprises transmitting the datafile via the cloud computing network.

E12. The method of any of paragraphs E1-E11.1, wherein the transmittingthe data file to the transient storage location comprises transmittingthe data file to the transient storage location from a central storagelocation associated with the ground computing device.

E13. The method of any of paragraphs E1-E11.1, wherein the transmittingthe data file to the transient storage location comprises transmittingthe data file to the transient storage location from a third partystorage location associated with the ground computing device.

E14. The method of any of paragraphs E1-E13, wherein the causing thedata file to be transmitted to the transient storage locationcorresponds to causing the data file to be transmitted to the transientstorage location in the aircraft computing device via an uplinkcommunication.

E15. The method of any of paragraphs E1-E14, further comprisingdetermining that the data file is to be transmitted from the aircraftcomputing device to the ground computing device via the transientstorage location.

E15.1. The method of paragraph E15, wherein the determining that thedata file is to be transmitted via the transient storage locationcomprises selecting the transient storage location from a plurality oftransient storage locations.

E15.2. The method of any of paragraphs E15-E15.1, wherein thedetermining that the data file is to be transmitted via the transientstorage location is based on determining the aircraft will begeographically located within a threshold distance of the transientstorage location at the time the data file will be transferred to theaircraft computing device.

E15.3. The method of any of paragraphs E15-E15.2, wherein the data fileis preloaded to the transient storage location before the aircraft isgeographically located within the threshold distance of the transientstorage location.

E15.4. The method of any of paragraphs E15-E15.3, wherein thedetermining that the data file is to be transmitted via the transientstorage location is based on a flight plan of the aircraft.

E15.5. The method of any of paragraphs E15-E15.4, wherein the transientstorage location is a cloud storage resource that is geographicallylocated within a threshold distance of at least a portion of the flightplan of the aircraft and/or that is expected to have an efficientconnection to the aircraft computing device during at least the portionof the flight plan of the aircraft.

E15.6. The method of any of paragraphs E15-E15.5, wherein thedetermining that the data file is to be transmitted via the transientstorage location is based on the airline identifier and/or the airplaneidentifier.

E15.6.1. The method of paragraph E15.6, wherein the determining that thedata file is to be transmitted via the transient storage locationcomprises:

transmitting the airline identifier and/or the airplane identifier tothe ground computing device; and

receiving, from the ground computing device and based on the airlineidentifier and/or the airplane identifier, an identification of theselected transient storage location.

E15.7. The method of any of paragraphs E15-E15.6.1, wherein thedetermining that the data file is to be transmitted via the transientstorage location is based on an airplane link type between the aircraftand the aircraft interface computing device.

E15.7.1. The method of paragraph E15.7, wherein the airplane link typeis one of a Wi-Fi link, a cellular link, or a satellite link.

E15.8. The method of any of paragraphs E15-E15.7.1, wherein thedetermining that the data file is to be transmitted via the transientstorage location is based on a file size of the data file, an onboardsystem type of the aircraft computing device, and/or hardwarecapabilities of the aircraft computing device.

E15.9. The method of any of paragraphs E15-E15.8, wherein thedetermining that the data file is to be transmitted via the transientstorage location is based on a performance of the cloud computingnetwork and/or a performance of the aircraft interface computing device.

E16. The method of any of paragraphs E1-E15.9, further comprisingdeleting the data file from the transient storage location.

E16.1. The method of paragraph E16, wherein the deleting the data filefrom the transient storage location is based on receiving the datatransmission from the aircraft computing device corresponding to anotification that the data file has been fully transmitted.

E17. The method of any of paragraphs E1-E16.1, further comprising:

receiving a notification that a remaining portion of the data file is tobe transferred from the ground computing device to the aircraftcomputing device via an alternate aircraft interface computing deviceand/or an alternate transient storage location; and

causing the aircraft computing device to receive the data file from theground computing device via the alternate aircraft interface computingdevice and/or the alternate transient storage location.

E18. The method of any of paragraphs E1-E17, further comprising:

determining metadata for the initial communication; and transmitting anotification to the ground computing device that includes the metadatafor the initial communication.

E18.1. The method of paragraph E18, wherein the metadata for the initialcommunication includes one or more of a name of the data file, a type ofthe data file, a size of the data file, a time stamp for the data file,a time stamp for the transfer, an airplane classifier, the airlineidentifier, the airplane identifier, a location of the aircraft, alocation of the transient storage location, and a URL for the data filein the transient storage location.

E18.2. The method of any of paragraphs E18-E18.1, further comprisingstoring the metadata for the initial communication.

E18.3. The method of any of paragraphs E18-E18.2, further comprisingtagging the data file with the metadata for the initial communication.

E19. The method of any of paragraphs E1-E18.3, further comprising:

receiving an additional initial communication from the aircraft servicebased on a break in communication between the aircraft computing deviceand the aircraft interface computing device that interrupted thetransmission of the data file from the aircraft computing device to thetransient storage location; and

resuming the transmission of the data file from the aircraft computingdevice to the transient storage location.

E19.1. The method of paragraph E19, wherein the break in communicationto the aircraft computing device comprises losing a network connection.

E19.2. The method of any of paragraphs E19-E19.1, wherein the break incommunication is a failure of the aircraft interface computing device.

E19.3. The method of any of paragraphs E19-E19.2, wherein the break incommunication corresponds to a failure of the transient storagelocation.

E19.4. The method of any of paragraphs E19-E19.3, wherein the resumingthe transmission of the data file from the aircraft computing device tothe transient storage location comprises determining the transientstorage is available, and transmitting a notification to the aircraftthat causes the transmission of the data file to the aircraft computingdevice and from the transient storage location to resume.

E19.5. The method of any of paragraphs E19-E19.4, wherein the resumingthe transmission of the data file to the aircraft computing device andfrom the transient storage location is based on a/the metadata for theinitial communication stored by the aircraft interface computing device.

E19.6. The method of any of paragraphs E19-E19.5, wherein the resumingthe transmission of the data file to the aircraft computing device andfrom the transient storage location comprises:

transmitting the metadata for the additional initial communication tothe ground computing device;

receiving, based on the metadata for the initial communication stored bythe ground computing device, a notification from the ground computingdevice that the transmission of the data file is to be continued; and

causing the transmission of the data file to the aircraft computingdevice and from the transient storage location to resume based on thenotification that the transmission of the data file is to be continued.

E19.6.1. The method of paragraph E19.6, wherein the notification thatthe transmission of the data file is to be continued includes one ormore of a status of the data file, a size of the data file stored on thetransient storage location, and a location of the data file on thetransient storage location.

E19.7. The method of any of paragraphs E19-E19.6.1, wherein theadditional initial communication is received by the aircraft APIexecuting on the aircraft interface computing device.

E19.8. The method of any of paragraphs E19-E19.6.1, wherein the aircraftinterface computing device is a first aircraft interface computingdevice, and the additional initial communication is received by a secondaircraft interface computing device.

E19.8.1. The method of paragraph E19.8, wherein the second aircraftinterface computing device is geographically located in a differentservice sub-region than the first aircraft interface computing device.

E20. The method of any of paragraphs E1-E19.8.1, further comprisingselecting an alternate transient storage location, and causing aremaining portion of the data file to be transmitted to the aircraftcomputing device and from the alternate transient storage location.

E20.1. The method of paragraph E20, wherein the selecting the alternatetransient storage location comprises selecting the alternate transientstorage location based on one or more of a new geographic location ofthe aircraft, performance data for the transient storage location,performance data for the alternate transient storage location, a failureof the transient storage location, performance data for the connectionbetween the ground computing device and the transient storage location,performance data for the connection between the ground computing deviceand the alternate transient storage location, a type of connectionbetween the aircraft computing device and the transient storagelocation, and a type of connection between the aircraft computing deviceand the alternate transient storage location.

E20.2. The method of any of paragraphs E20-E20.1, wherein the selectingthe alternate transient storage location comprises selecting thealternate transient storage location from the plurality of transientstorage locations.

E21. The method of any of paragraphs E1-E20.2, further comprising:

receiving, by the aircraft interface computing device, a further initialcommunication from an additional aircraft service executing on anadditional aircraft computing device located onboard an additionalaircraft;

determining, by the aircraft interface computing device, that anadditional data file is to be transmitted to the additional aircraftcomputing device and from the ground computing device;

transmitting, to the ground computing device, an additional data signalconfigured to cause the additional data file to be transmitted from theground computing device to the transient storage location; and

causing the additional data file to be transmitted from the transientstorage location to the additional aircraft computing device.

E22. The method of any of paragraphs E1-E20.2, further comprising:

receiving, by the aircraft interface computing device, a further initialcommunication from an additional aircraft service executing on anadditional aircraft computing device located onboard an additionalaircraft;

determining, by the aircraft interface computing device, that anadditional data file is to be transmitted from the additional aircraftcomputing device to the ground computing device;

transmitting, to the ground computing device, an additional data signalconfigured to cause the additional data file to be transmitted from theground computing device to an additional transient storage location thatis different from the transient storage location; and

causing the additional data file to be transmitted from the additionaltransient storage location to the additional aircraft computing device.

E23. The method of any of paragraphs E1-E22, wherein the initialcommunication is transmitted from the aircraft service to the aircraftAPI over a first communications medium, and one or more firstcommunications are transmitted from the aircraft interface computingdevice to the ground computing device over a second communicationsmedium that is different from the first communications medium.

E23.1. The method of paragraph E23, wherein the first communicationsmedium is one of a wireless network, a satellite network, and a cellularnetwork.

E23.2. The method of any of paragraphs E23-E23.1, wherein the secondcommunications medium is the internet.

E23.3. The method of any of paragraphs E23-E23.1, wherein the secondcommunications medium is a cloud computing network.

E24. The method of any of paragraphs E1-E23.3, wherein the receiving theinitial communication from the aircraft service comprises establishing asecure connection between the aircraft computing device and the aircraftinterface computing device.

E25. The method of any of paragraphs E1-E24, wherein the aircraft is inflight during the transmission of the initial communication.

F1. A computing method for data exchanges between an aircraft computingdevice executing an aircraft service on an aircraft and a groundcomputing device, the method comprising:

receiving, by the ground computing device, a data transmission from anaircraft interface computing device located remotely from the groundcomputing device, the data transmission indicating that a data file isto be transmitted from the ground computing device to the aircraftcomputing device in communication with the aircraft interface computingdevice via an aircraft API executing on the aircraft interface computingdevice; and

transmitting, by the ground computing device, the data file to theaircraft computing device via a transient storage location associatedwith the aircraft interface computing device.

F1.1. The method of paragraph F1, wherein the ground computing device isconfigured to exchange the data file with one or more aircraft computingdevices within a service region, wherein the service region comprises aplurality of service sub-regions.

F1.1.1. The method of paragraph F1.1, wherein the service region is aglobal region.

F2. The method of any of paragraphs F1-F1.1.1, wherein the transientstorage location is a data storage resource of a cloud network.

F3. The method of any of paragraphs F1-F2, wherein the transmitting thedata file to the aircraft computing device via the transient storagelocation corresponds to the ground computing device transmitting thedata file from the transient storage location over the cloud network.

F4. The method of any of paragraphs F1-F3, wherein the transient storagelocation is geographically located remotely from the ground computingdevice.

F4.1. The method of paragraph F4, wherein the aircraft interfacecomputing device is located in a first service sub-region of theplurality of service sub-regions, and the transient storage location islocated in a second service sub-region of the plurality of servicesub-regions that is different from the first service sub-region.

F4.1.1. The method of paragraph F4.1, wherein the aircraft interfacecomputing device is geographically located remotely from the groundcomputing device.

F4.1.2. The method of paragraph F4.1, wherein the aircraft interfacecomputing device is geographically located within a threshold distanceof the transient storage location.

F5. The method of any of paragraphs F1-F4.1.2, wherein the aircraft APIis one of a plurality of aircraft APIs, and wherein each aircraft API ofthe plurality of remote APIs executes on a plurality of aircraftinterface computing devices.

F5.1. The method of paragraph F5, wherein each aircraft interfacecomputing device of the plurality of aircraft interface computing deviceis located in a different service sub-region of the plurality of servicesub-regions.

F6. The method of any of paragraphs F1-F5.1, further comprisingreceiving, from the aircraft interface computing device and by theground computing device, one or more identifiers associated with anaircraft.

F6.1. The method of paragraph F6, wherein the one or more identifiersare associated with the aircraft, the aircraft computing device, and/orthe aircraft service.

F6.2. The method of any of paragraphs F6-F6.1, wherein the one or moreidentifiers include an airline identifier and/or an airplane identifier.

F6.2.1. The method of paragraph F6.2, wherein the airline identifiercomprises one or more of an international civil aviation organization(ICAO) code or an international air transport association (IATA) code.

F6.2.2. The method of paragraph F6.2, wherein the airplane identifiercomprises one of a tail number, a registration number, a manufacturernumber, and a serial number.

F7. The method of any of paragraphs F1-F6.2.2, further comprisingdetermining an aircraft classifier associated with the aircraft.

F7.1. The method of paragraph F7, wherein the determining the aircraftclassifier comprises receiving, from the aircraft interface computingdevice and by the ground computing device, the aircraft classifierassociated with the aircraft.

F7.2. The method of paragraph F7, wherein the determining the aircraftclassifier comprises determining, by the ground computing device, theaircraft classifier based at least in part on the airplane identifier.

F7.2.1. The method of paragraph F7.2, wherein the determining theaircraft classifier comprises accessing a data construct that identifiesthe aircraft classifier.

F7.2.1.1. The method of paragraph F7.2.1, wherein the data construct isa lookup table that stores relationships between the one or moreidentifiers and the aircraft classifier.

F8. The method of any of paragraphs F1-F7.2.1.1, further comprisingdetermining that the data file is to be transmitted via the transientstorage location.

F8.1. The method of paragraph F8, wherein the determining that the datafile is to be transmitted via the transient storage location comprisesselecting the transient storage location from a plurality of transientstorage locations.

F8.2. The method of any of paragraphs F8-F8.1, wherein the determiningthat the data file is to be transmitted via the transient storagelocation is based on the ground computing device determining thelocation of the transient storage location is geographically within athreshold distance of the aircraft.

F8.3. The method of any of paragraphs F8-F8.2, wherein the determiningthat the data file is to be transmitted via the transient storagelocation is based on the ground computing device determining theaircraft will be located within the threshold distance of the transientstorage location at the time the data file will be transferred to theaircraft computing device.

F8.4. The method of any of paragraphs F8-F8.3, wherein the data file ispreloaded to the transient storage location before the aircraft isgeographically located within the threshold distance of the transientstorage location.

F8.5. The method of any of paragraphs F8-F8.4, wherein the transientstorage location is selected from a plurality of potential transientstorage locations based on a flight plan of the aircraft.

F8.6. The method of any of paragraphs F8-F8.5, wherein the transientstorage location is a cloud storage resource that is geographicallylocated within the threshold distance of the transient storage locationduring at least a portion of the flight plan of the aircraft and/or thatis expected to have an efficient connection to the aircraft computingdevice during at least the portion of the flight plan of the aircraft.

F8.7. The method of any of paragraphs F8-F8.6, wherein the transientstorage location is selected from the plurality of potential transientstorage locations based on one or more of performance data for analternate transient storage location, a failure of the transient storagelocation, performance data for the connection between the groundcomputing device and the transient storage location, performance datafor the connection between the ground computing device and the alternatetransient storage location, a type of connection between the aircraftcomputing device and the transient storage location, and a type ofconnection between the aircraft computing device and the alternatetransient storage location.

F8.8. The method of any of paragraphs F8-F8.7, wherein the determiningthat the data file is to be transmitted via the transient storagelocation is based on the airline identifier and/or the airplaneidentifier.

F8.9. The method of any of paragraphs F8-F8.8, wherein the determiningthat the data file is to be transmitted via the transient storagelocation comprises:

receiving the airline identifier and/or the airplane identifier from theaircraft interface computing device; and

determining, based on the airline identifier and/or the airplaneidentifier, a selected transient storage location through which the datafile is to be transmitted.

F8.10. The method of any of paragraphs F8-F8.9, wherein the determiningthat the data file is to be transmitted via the transient storagelocation is based on an airplane link type between the aircraft and theaircraft interface computing device.

F8.10.1. The method of paragraph F8.10, wherein the airplane link typeis one of a Wi-Fi link, a cellular link, or a satellite link.

F8.11. The method of any of paragraphs F8-F8.10.1, wherein thedetermining that the data file is to be transmitted via the transientstorage location is based on a file size of the data file, an onboardsystem type of the aircraft computing device, and/or hardwarecapabilities of the aircraft computing device.

F8.12. The method of any of paragraphs F8-F8.11, wherein the determiningthat the data file is to be transmitted via the transient storagelocation is based on a performance of the cloud computing network and/ora performance of the aircraft interface computing device.

F9. The method of any of paragraphs F1-F8.12, further comprising:

determining that a remaining portion of the data file is to betransferred from the ground computing device to the aircraft computingdevice via a different transient storage location; and transmitting anotification that the remaining portion of the data file is to betransferred from the ground computing device to the aircraft computingdevice via the different transient storage location.

F9.1. The method of paragraph F9, wherein the determining the remainingportion of the data file is to be transferred from the ground computingdevice to the aircraft computing device via the different transientstorage location is based on one or more of a new geographic location ofthe aircraft, performance data for the transient storage location,performance data for the alternate transient storage location, a failureof the transient storage location, performance data for the connectionbetween the ground computing device and the transient storage location,performance data for the connection between the ground computing deviceand the alternate transient storage location, a type of connectionbetween the aircraft computing device and the transient storagelocation, and a type of connection between the aircraft computing deviceand the alternate transient storage location.

F10. The method of any of paragraphs F1-F9.1, wherein the groundcomputing device receiving the data transmission from the aircraftinterface computing device corresponds to receiving a first datatransmission from a first aircraft interface computing device located ina first service sub-region, the first data transmission indicating thata first data file is to be transmitted from the ground computing deviceto a first aircraft computing device in communication with the firstaircraft interface computing device.

F10.1. The method of paragraph F10, further comprising receiving, by theground computing device, a second data transmission from a secondaircraft interface computing device located in a second servicesub-region, wherein the second service sub-region is different from thefirst service sub-region, and the second data transmission indicatingthat a second data file is to be transmitted from the ground computingdevice to a second aircraft computing device in communication with thesecond aircraft interface computing device.

F10.1.1. The method of paragraph F10.1, further comprising transmitting,by the ground computing device, the second data file to the secondaircraft computing device via the transient storage location.

F10.1.2. The method of paragraph F10.1, further comprising transmitting,by the ground computing device, the second data file to the secondaircraft computing device via the alternate transient storage locationthat is located in a different service sub-region from the transientstorage location.

F10.2. The method of paragraph F10, further comprising receiving, by theground computing device, a second data transmission from the firstaircraft interface computing device, the second data transmissionindicating that a third data file is to be transmitted from the groundcomputing device to a second aircraft computing device in communicationwith the first aircraft interface computing device.

F10.2.1. The method of paragraph F10.2, further comprising transmitting,by the ground computing device, the third data file to the secondaircraft computing device via the transient storage location.

F10.2.2. The method of paragraph F10.2, further comprising transmitting,by the ground computing device, the third data file to the secondaircraft computing device via the alternate transient storage locationthat is located in a different service sub-region from the transientstorage location.

F11. The method of any of paragraphs F1-F10.2.2, wherein the data fileincludes a software update and/or a flight plan.

F12. The method of any of paragraphs F1-F11, wherein the datatransmission is received from the aircraft interface computing device inresponse to the aircraft interface computing device receiving an initialcommunication from the aircraft.

F13. The method of any of paragraphs F1-F12, wherein the aircraft is inflight during a transmission of the data file from the transient storagelocation to the aircraft computing device.

F14. The method of any of paragraphs F1-F13, wherein the data file istransmitted to the aircraft from the transient storage location over afirst communications medium, and the data transmission is transmitted tothe transient storage location from the ground computing device over asecond communications medium that is different from the firstcommunications medium.

F14.1. The method of paragraph F14, wherein the first communicationsmedium is one of a wireless network, a satellite network, and a cellularnetwork.

F14.2. The method of any of paragraphs F14-F14.1, wherein the firstcommunications medium is a downlink communication medium.

F14.3. The method of any of paragraphs F14-F14.2, wherein the secondcommunications medium is the internet.

F14.4. The method of any of paragraphs F14-F14.2, wherein the secondcommunications medium is a cloud computing network.

F15. The method of any of paragraphs F1-F14.3, wherein the aircraftinterface computing device is an infrastructure component of a cloudcomputing network.

F16. The method of any of paragraphs F1-F15, further comprisingreceiving, from the aircraft interface computing device and by theground computing device, an aircraft classifier associated with theaircraft.

F16.1. The method of paragraph F16, wherein the aircraft classifiercorresponds to one or more of a type of the aircraft, a year of theaircraft, a model of the aircraft, an airline associated with theaircraft, a type of computing device on which the aircraft service isexecuting, a type of service to which the aircraft service corresponds,or a combination thereof.

F17. The method of any of paragraphs F1-F16.1, further comprising:

receiving an additional data transmission based on a break incommunication between the aircraft computing device and the aircraftinterface computing device and/or the transient storage location, theadditional data transmission indicating that a remaining portion of thedata file is to be transmitted from the ground computing device to theaircraft computing device; and

resuming the transmission of the data file from the ground computingdevice to the aircraft computing device.

F17.1. The method of paragraph F17, wherein the break in communicationcorresponds to the aircraft computing device losing a networkconnection.

F17.2. The method of paragraph F17, wherein the break in communicationcorresponds to a failure of the aircraft interface computing device.

F17.3. The method of paragraph F17, wherein the break in communicationcorresponds to a failure of the transient storage location.

F17.4. The method of any of paragraphs F17-F17.3, wherein the resumingthe transmission of the data file from the transient storage location tothe aircraft computing device comprises determining the transientstorage location is available.

F17.5. The method of any of paragraphs F17-F17.4, wherein the resumingthe transmission of the data file from the transient storage location tothe aircraft computing device is based on metadata for the data file.

F17.6. The method of any of paragraphs F17-F17.5, wherein the resumingthe transmission of the data file from the ground computing device tothe aircraft computing device comprises transmitting to the aircraftinterface computing device a notification that includes one or more of astatus of the data file, a size of the data file stored on the transientstorage location, and a location of the data file on the transientstorage location.

F17.7. The method of any of paragraphs F17-F17.6, wherein the additionaldata transmission is received from the aircraft interface computingdevice.

F17.8. The method of any of paragraphs F17-F17.7, wherein the aircraftinterface computing device is a first aircraft interface computingdevice, and the additional data transmission is received from a secondaircraft interface computing device.

F17.8.1. The method of paragraph F17.8, wherein the second aircraftinterface computing device is geographically located in a remotelocation from the first aircraft interface computing device.

F18. The method of any of paragraphs F1-F17.8.1, wherein the receivingthe data transmission from the aircraft interface computing deviceindicating the data file is to be transmitted from the aircraftcomputing device to the ground computing device comprises:

receiving, from the aircraft interface computing device, one or more ofthe aircraft classifiers and the one or more identifiers associated withthe aircraft;

determining that the data file is to be transmitted from the aircraftcomputing device to the ground computing device is based on the one ormore of the aircraft classifiers and the one or more identifiersassociated with the aircraft; and

transmitting, to the aircraft interface computing device, a notificationthat the data file is to be transmitted from the aircraft computingdevice to the ground computing device.

F18.1. The method of paragraph F18, further comprising determining, bythe ground computing device, that the data file is to be transmittedfrom the ground computing device to the aircraft computing device byaccessing a command queue associated with the aircraft.

F19. The method of any of paragraphs F1-F18.1, further comprising:

determining that the data file has been transmitted to the aircraftcomputing device and from the ground computing device;

determining, based on the command queue, an additional data file is tobe exchanged between the central storage and the aircraft computingdevice; and

exchanging the additional data file between the ground computing deviceand the aircraft computing device.

F20. The method of any of paragraphs F1-F19, wherein the groundcomputing device hosts and/or maintains the command queue in anaccessible storage location.

F21. The method of any of paragraphs F1-F20, further comprisingreceiving, by the ground computing device, a command to transmit thedata file to the aircraft computing device.

F21.1. The method of paragraph F21, wherein the command to transmit thedata file is received from a third party computer separate from theground computing device.

F21.2. The method of paragraph F21, wherein the command to transmit thedata file is received via a user input received by one of the groundcomputing device and a user computer associated with the groundcomputing device.

F21.3. The method of any of paragraphs F21-F21.2, wherein the command totransmit the data file is added to the command queue based on thereceiving the command to transmit the data file to the aircraftcomputing device.

G1. A computing method for data exchanges between an aircraft computingdevice executing an aircraft service on an aircraft and a groundcomputing device, the method comprising:

accessing a command queue associated with the aircraft computing devicelocated on an aircraft, wherein the command queue corresponds to a datastructure that identifies a plurality of commands that are to beexecuted in association with the aircraft computing device;

determining a command in the command queue is to be executed, whereinthe command corresponds to a notification that a data file is to beexchanged between the aircraft computing device and the ground computingdevice; and

transmitting, by the ground computing device, a data transmission to anaircraft API operating on an aircraft interface computing device,wherein the data transmission is configured to cause the aircraft API tocause the data file to be exchanged between the aircraft computingdevice and the ground computing device.

G2. The method of paragraph G1, wherein the data file is exchangedbetween the aircraft computing device and the ground computing devicewhile the aircraft is in flight.

G3. The method of any of paragraphs G1-G2, wherein the commandcorresponds to a notification that the data file is to be transmitted tothe ground computing device and from the aircraft computing device.

G3.1. The method of paragraph G1, further comprising causing the datafile to be stored in a storage device associated with the groundcomputing device.

G3.1.1. The method of paragraph G3.1, wherein a central storage locationsegregates stored data according to one or more aircraft classifiers.

G3.1.1.1. The method of paragraph G3.1.1, wherein individual aircraftclassifiers of the one or more aircraft classifiers correspond to one ormore of a type of the aircraft, a year of the aircraft, a model of theaircraft, an airline associated with the aircraft, a type of computingdevice on which an aircraft service is executing, a type of service towhich the aircraft service corresponds, or a combination thereof.

G3.2. The method of paragraph G1, further comprising transmitting thedata file to a third party computer associated with a third partyairline.

G4. The method of any of paragraphs G1-G2, wherein the commandcorresponds to a notification the data file is to be transmitted to theaircraft computing device and from the ground computing device.

G4.1. The method of paragraph G4, wherein the command corresponds to anotification the data file is to be exchanged between a plurality ofaircraft computing devices executing on a plurality of aircraft and theground computing device.

G5. The method of any of paragraphs G1-G4.1, wherein the data filecomprises one or more of a software update, a flight plan, a securitylog, a performance log, health monitoring data, and/or a system log.

G6. The method of any of paragraphs G1-G5, further comprising receiving,from the aircraft interface computing device, a data transmission thatincludes a command request and one or more identifiers associated withthe aircraft.

G6.1. The method of paragraph G6, wherein the command request isreceived from the aircraft interface computing device in response to theaircraft interface computing device receiving an initial communicationfrom the aircraft computing device.

G6.1.1. The method of paragraph G6.1, wherein the initial communicationis received from the aircraft computing device while the aircraft is inflight.

G6.1.2. The method of any of paragraphs G6.1-G6.1.1, wherein the initialcommunication includes the command request.

G6.1.2.1. The method of paragraph G6.1.2, wherein the ground computingdevice is configured to access the command queue associated with theaircraft computing device located on the aircraft based on the commandrequest received from the aircraft interface computing device.

G6.1.3. The method of any of paragraphs G6.1-G6.1.2.1, wherein theground computing device is configured to access the command queueassociated with the aircraft computing device located on the aircraftbased on the one or more identifiers.

G6.1.3.1. The method of paragraph G6.1.3, wherein the initialcommunication includes the one or more identifiers for the aircraft, theaircraft computing device, and/or the aircraft service.

G6.2. The method of any of paragraphs G6-G6.1.3.1, wherein the one ormore identifiers include an airline identifier and/or an airplaneidentifier.

G6.2.1. The method of paragraph G6.2, wherein the airline identifiercomprises one of an international civil aviation organization (ICAO)code or an international air transport association (IATA) code.

G6.2.2. The method of any of paragraphs G6.2-G6.2.1, wherein theairplane identifier comprises one of a tail number, a registrationnumber, a manufacturer number, and a serial number.

G6.3. The method of any of paragraphs G6-G6.2.2, further comprising:

determining an identity of the aircraft associated with the commandbased on the one or more identifiers associated with the aircraft; and

selecting the command queue from a plurality of command queues based onthe identity of the aircraft.

G7. The method of any of paragraphs G1-G6.3, wherein the groundcomputing device is configured to access the command queue associatedwith the aircraft computing device located on the aircraft based on thedetermination that a trigger condition has occurred.

G7.1. The method of paragraph G7, wherein the trigger conditioncorresponds to a time period expiring, a message being received, analert being received, reception of a user input, a notification from athird party computing device being received, a location of the aircraft,or a combination thereof.

G8. The method of any of paragraphs G1-G7.1, wherein the command queuefurther identifies an order of the plurality of commands that indicatesthe sequence in which the individual commands are to be executed, andthe determining that the command in the command queue is to be executedis based on the order of the plurality of commands in the command queue.

G8.1. The method of paragraph G8, wherein the determining that thecommand in the command queue is to be executed is based on the order ofthe plurality of commands in the command queue is based on a/the one ormore identifiers.

G8.2. The method of any of paragraphs G8-G8.1, wherein the determiningthat the command in the command queue is to be executed based on theorder of the plurality of commands in the command queue is based on alocation of the aircraft.

G9. The method of any of paragraphs G1-G8.2, wherein the determiningthat the command in the command queue is to be executed is based on aperformance of a cloud computing network.

G10. The method of any of paragraphs G1-G9, wherein the determining thatthe command in the command queue is to be executed is based on a filesize of the data file, an onboard system type of the aircraft computingdevice, and/or hardware capabilities of the aircraft computing device.

G11. The method of any of paragraphs G1-G10, wherein the determining thecommand in the command queue is to be executed is based on a type of thetrigger condition that has occurred.

G12. The method of any of paragraphs G1-G11, wherein the datatransmission causes the remote API to transmit one or morecommunications to the aircraft API executing on the aircraft computingdevice.

G12.1. The method of paragraph G12, wherein the one or morecommunications to the aircraft service cause the data file to beexchanged between the aircraft computing device and the ground computingdevice.

G13. The method of any of paragraphs G1-G12.1, wherein causing the datafile to be exchanged between the aircraft computing device and theground computing device comprises the data file being transmitted fromthe aircraft computing device to the ground computing device.

G13.1. The method of paragraph G13, wherein the data file beingtransmitted from the aircraft computing device to the ground computingdevice comprises:

the data file being transmitted from the aircraft computing device to atransient storage location, wherein the transient storage location is adata storage resource of a cloud computing network; and

wherein the method further comprises receiving, by the ground computingdevice, the data file from the transient storage location.

G13.1.1. The method of paragraph G13.1, wherein the data file istransmitted from the aircraft computing device to the transient storagelocation over one of a wireless network, a satellite network, and acellular network.

G13.1.2. The method of any of paragraphs G13.1-G13.1.1, wherein the datafile is received by the ground computing device and from the transientstorage location over the cloud computing network.

G14. The method of any of paragraphs G1-G12.1, wherein causing the datafile to be exchanged between the aircraft computing device and theground computing device comprises transmitting the data file from theground computing device to the aircraft computing device.

G14.1. The method of paragraph G14, wherein the transmitting the datafile from the ground computing device to the aircraft computing devicecomprises:

transmitting, by the ground computing device, the data file to atransient storage location, wherein the transient storage location is adata storage resource of a cloud computing network; and

transmitting the data file to the aircraft computing device from thetransient storage location.

G14.1.1. The method of paragraph G14.1, wherein the data file isreceived by the aircraft computing device and from the transient storagelocation over one of a wireless network, a satellite network, and acellular network.

G14.1.2. The method of any of paragraphs G14.1-G14.1.1, wherein the datafile is transmitted by the ground computing device to the transientstorage location over the cloud computing network.

G15. The method of any of paragraphs G1-G14.1.2, further comprisingdetermining a break in communication between the aircraft computingdevice and the ground computing device.

G15.1. The method of paragraph G15, further comprising storing metadataassociated with the break in communication in the command queue.

G15.1.1. The method of paragraph G15.1, further comprising determining adata connection with the aircraft computing device is formed, andcausing an exchange of the data file to resume based on the metadataassociated with the break in communication.

G16. The method of any of paragraphs G1-G15.1.1, further comprisingdetermining the exchange of the data file is complete.

G16.1. The method of paragraph G16, further comprising transmitting anotification to the aircraft interface computing device configured tocause the data file to be deleted from the transient storage locationbased on the exchange of the data file being complete.

G16.2. The method of any of paragraphs G16-G16.1, further comprisingremoving the command from the command queue.

G16.3. The method of any of paragraphs G16-G16.2, further comprising:

determining an additional command in the command queue is to beexecuted, wherein the additional command corresponds to an additionalnotification that an additional data file is to be exchanged between theaircraft computing device and the ground computing device; and

transmitting, by the ground computing device, an additional datatransmission to the aircraft API operating on the aircraft interfacecomputing device, wherein the additional data transmission is configuredto cause the aircraft API to cause the additional data file to beexchanged between the aircraft computing device and the ground computingdevice.

G17. The method of any of paragraphs G1-G14.1.2, further comprisingreceiving an input data communication that includes the command the datafile is to be exchanged between the aircraft computing device and theground computing device.

G17.1. The method of paragraph G17, wherein the command included in theinput data communication indicates the data file is to be exchangedbetween a plurality of aircraft computing devices located on differentaircrafts and the ground computing device.

G17.2. The method of any of paragraphs G17-G17.1, wherein the commandincluded in the input data communication indicates that a plurality ofdata files are to be exchanged between the aircraft computing devicesand the ground computing device.

G17.3. The method of any of paragraphs G17-G17.2, wherein the input datacommunication is received by the ground computing device from a thirdparty computing device associated with an airline.

G17.4. The method of any of paragraphs G17-G17.2, wherein the input datacommunication corresponds to a user input to the ground computingdevice.

G17.5. The method of any of paragraphs G17-G17.2, wherein the input datacommunication corresponds to a user input to a computing deviceassociated with the ground computing device.

G17.6. The method of any of paragraphs G17-G17.2, wherein the input datacommunication is received by the ground computing device from theaircraft computing device.

G17.7. The method of any of paragraphs G17-G17.6, wherein the commandincluded in the input data communication indicates that the data file isto be exchanged between the ground computing device and one or moreaircraft associated with a specified aircraft classifier.

G17.8. The method of any of paragraphs G17-G17.7, wherein the commandincluded in the input data communication indicates that the data file isto be exchanged between the ground computing device and one or moreaircraft associated with an aircraft identifier.

G17.9. The method of any of paragraphs G17-G17.8, further comprisingadding the command to the command queue.

G18. The method of any of paragraphs G1-G17.9, further comprisingreordering the command queue based on one or more of an importance orurgency of individual commands, the file size of the data file, theflight plan of the aircraft, a performance of the cloud computingnetwork, and the hardware capabilities of the aircraft computing device.

H1. A computing device comprising:

a processing unit;

a memory; and

an API stored on the memory, wherein the API comprises non-transitorycomputer readable instructions that, when executed by the processingunit, cause the computing device to perform the computing methods of anyof paragraphs A1-G18.

I1. Use of the computing device of paragraph H1 to exchange a data filebetween an aircraft computing device and a ground computing device.

J1. Non-transitory computer readable instructions stored on a memory ofa computing device that, when executed by a processing unit of thecomputing device, cause the computing device to perform the computingmethods of any of paragraphs A1-G18.

K1. Use of the non-transitory computer readable instructions ofparagraph J1 to exchange a data file between an aircraft computingdevice and a ground computing device.

L1. A cloud computing system for supporting data communication between aplurality of aircraft computing devices and a ground computing device,the cloud computing system comprising:

the plurality of aircraft computing devices, each aircraft computingdevice being located on a corresponding aircraft;

a plurality of aircraft interface computing devices of the cloudcomputing system, wherein individual aircraft interface computingdevices of the plurality of aircraft interface computing devices storenon-transitory computer readable instructions that, when executed by aprocessing unit of the individual aircraft interface computing devices,cause the individual aircraft interface computing devices to perform thecomputing methods of any of paragraphs A1-A23.2.2, C1-C30, and E1-E25;

a plurality of transient storage locations of the cloud computingsystem; and

a ground computing device, wherein the ground computing device storesnon-transitory computer readable instructions that, when executed by aprocessing unit of the ground computing device, cause the groundcomputing device to perform the computing methods of any of paragraphsB1-19.2, D1-D24.1, F1-F21.3, and G1-G18.

M1. Use of the cloud computing system of paragraph L1 to exchange a datafile between an aircraft computing device and a ground computing device.

As used herein, the term “and/or” placed between a first entity and asecond entity means one of (1) the first entity, (2) the second entity,and (3) the first entity and the second entity. Multiple entities listedwith “and/or” should be construed in the same manner, i.e., “one ormore” of the entities so conjoined. Other entities may optionally bepresent other than the entities specifically identified by the “and/or”clause, whether related or unrelated to those entities specificallyidentified. Thus, as a non-limiting example, a reference to “A and/orB,” when used in conjunction with open-ended language such as“comprising” may refer, in one embodiment, to A only (optionallyincluding entities other than B); in another embodiment, to B only(optionally including entities other than A); in yet another embodiment,to both A and B (optionally including other entities). These entitiesmay refer to elements, actions, structures, steps, operations, values,and the like.

As used herein, the phrase “at least one,” in reference to a list of oneor more entities should be understood to mean at least one entityselected from any one or more of the entities in the list of entities,but not necessarily including at least one of each and every entityspecifically listed within the list of entities and not excluding anycombinations of entities in the list of entities. This definition alsoallows that entities may optionally be present other than the entitiesspecifically identified within the list of entities to which the phrase“at least one” refers, whether related or unrelated to those entitiesspecifically identified. Thus, as a non-limiting example, “at least oneof A and B” (or, equivalently, “at least one of A or B,” or,equivalently “at least one of A and/or B”) may refer, in one embodiment,to at least one, optionally including more than one, A, with no Bpresent (and optionally including entities other than B); in anotherembodiment, to at least one, optionally including more than one, B, withno A present (and optionally including entities other than A); in yetanother embodiment, to at least one, optionally including more than one,A, and at least one, optionally including more than one, B, (andoptionally including other entities). In other words, the phrases “atleast one,” “one or more,” and “and/or” are open-ended expressions thatare both conjunctive and disjunctive in operation. For example, each ofthe expressions “at least one of A, B, and C,” “at least one of A, B, orC,” “one or more of A, B, and C,” “one or more of A, B, or C,” and “A,B, and/or C” may mean A alone, B alone, C alone, A and B together, A andC together, B and C together, A, B, and C together, and optionally anyof the above in combination with at least one other entity.

As used herein, the terms “adapted” and “configured” mean that theelement, component, or other subject matter is designed and/or intendedto perform a given function. Thus, the use of the terms “adapted” and“configured” should not be construed to mean that a given element,component, or other subject matter is simply “capable of” performing agiven function but that the element, component, and/or other subjectmatter is specifically selected, created, implemented, utilized,programmed, and/or designed for the purpose of performing the function.It also is within the scope of the present disclosure that elements,components, and/or other recited subject matter that is recited as beingadapted to perform a particular function may additionally oralternatively be described as being configured to perform that function,and vice versa.

As used herein, the phrase, “for example,” the phrase, “as an example,”and/or simply the term “example,” when used with reference to one ormore components, features, details, structures, embodiments, and/ormethods according to the present disclosure, are intended to convey thatthe described component, feature, detail, structure, embodiment, and/ormethod is an illustrative, non-exclusive example of components,features, details, structures, embodiments, and/or methods according tothe present disclosure. Thus, the described component, feature, detail,structure, embodiment, and/or method is not intended to be limiting,required, or exclusive/exhaustive; and other components, features,details, structures, embodiments, and/or methods, including structurallyand/or functionally similar and/or equivalent components, features,details, structures, embodiments, and/or methods, are also within thescope of the present disclosure.

The various disclosed elements of apparatuses and steps of methodsdisclosed herein are not required to all apparatuses and methodsaccording to the present disclosure, and the present disclosure includesall novel and non-obvious combinations and subcombinations of thevarious elements and steps disclosed herein. Moreover, one or more ofthe various elements and steps disclosed herein may define independentinventive subject matter that is separate and apart from the whole of adisclosed apparatus or method. Accordingly, such inventive subjectmatter is not required to be associated with the specific apparatusesand methods that are expressly disclosed herein, and such inventivesubject matter may find utility in apparatuses and/or methods that arenot expressly disclosed herein.

The various disclosed elements of systems and steps of methods disclosedherein are not required of all systems and methods according to thepresent disclosure, and the present disclosure includes all novel andnon-obvious combinations and subcombinations of the various elements andsteps disclosed herein. Moreover, any of the various elements and steps,or any combination of the various elements and/or steps, disclosedherein may define independent inventive subject matter that is separateand apart from the whole of a disclosed system or method. Accordingly,such inventive subject matter is not required to be associated with thespecific systems and methods that are expressly disclosed herein, andsuch inventive subject matter may find utility in systems and/or methodsthat are not expressly disclosed herein.

It is believed that the disclosure set forth above encompasses multipledistinct inventions with independent utility. While each of theseinventions has been disclosed in its preferred form, the specificembodiments thereof as disclosed and illustrated herein are not to beconsidered in a limiting sense as numerous variations are possible. Thesubject matter of the inventions includes all novel and non-obviouscombinations and subcombinations of the various elements, features,functions, and/or properties disclosed herein. Similarly, where theclaims recite “a” or “a first” element or the equivalent thereof, suchclaims should be understood to include incorporation of one or more suchelements, neither requiring nor excluding two or more such elements.

1. A computing method for exchanging data between an aircraft computingdevice on an aircraft and a ground computing device, the methodcomprising: receiving, by the ground computing device, a datatransmission from an aircraft interface computing device locatedremotely from the ground computing device, the data transmissionindicating that a data file is to be exchanged between the groundcomputing device and the aircraft computing device in communication withthe aircraft interface computing device; and exchanging the data filebetween a central storage location associated with the ground computingdevice and the aircraft computing device utilizing an aircraft APIexecuting on the aircraft interface computing device, wherein theaircraft API is one of a plurality of aircraft APIs stored on theaircraft interface computing device, and wherein each of the pluralityof aircraft APIs are configured for communicating with unique aircraftservices executing on unique aircraft computing devices.
 2. The methodof claim 1, wherein the ground computing device receiving the datatransmission from the aircraft interface computing device comprisesreceiving a first data transmission from a first aircraft interfacecomputing device located in a first service sub-region, and the methodfurther comprising: receiving, by the ground computing device, a seconddata transmission from a second aircraft interface computing devicelocated in a second service sub-region, wherein the second servicesub-region is different from the first service sub-region, and thesecond data transmission indicating that a second data file is to beexchanged between the ground computing device and a second aircraftcomputing device in communication with the second aircraft interfacecomputing device; and exchanging, the second data file between thecentral storage location and the second aircraft computing device. 3.The method of claim 1, wherein the receiving the data transmission fromthe aircraft interface computing device comprises receiving a first datatransmission from a aircraft interface computing device located in afirst service sub-region, and the method further comprising: receiving,by the ground computing device, a second data transmission from thefirst aircraft interface computing device, the second data transmissionindicating that a third data file is to be exchanged between the groundcomputing device and a second aircraft computing device in communicationwith the second aircraft interface computing device; and exchanging, thethird data file between the central storage location and the secondaircraft computing device.
 4. The method of claim 1, further comprisingreceiving an additional data transmission based on a break incommunication between the aircraft computing device and the aircraftinterface computing device.
 5. The method of claim 4, wherein theadditional data transmission is received from the aircraft interfacecomputing device.
 6. The method of claim 4, wherein the aircraftinterface computing device is a first aircraft interface computingdevice, and the additional data transmission is received from a secondaircraft interface computing device that is located in a differentservice sub-region than the first aircraft interface computing device.7. The method of claim 1, wherein the ground computing device maintainsa command queue in an accessible storage location, and the methodfurther comprises determining, by the ground computing device, that thedata file is to be transmitted between the central storage location andthe aircraft computing device by accessing the command queue associatedwith the aircraft.
 8. The method of claim 7, further comprising:determining that the data file has been exchanged between the groundcomputing device and the aircraft computing device; determining, basedon the command queue, that another data file is to be exchanged betweenthe central storage location and the aircraft computing device based onthe command queue; and exchanging the other data file between thecentral storage location and the aircraft computing device.
 9. Themethod of claim 1, wherein the aircraft interface computing device isone of a plurality of aircraft interface computing devices.
 10. Themethod of claim 9, wherein each aircraft interface computing device ofthe plurality of aircraft interface computing devices is located in acorresponding service sub-region of the plurality of servicesub-regions.
 11. The method of claim 1, wherein the data file includesone of: a security log; a performance log; health monitoring data; asystem log; a software update; or a flight plan.
 12. The method claim 1,wherein the data transmission is received from the aircraft interfacecomputing device in response to the aircraft interface computing devicereceiving an initial communication from the aircraft service.
 13. Themethod of claim 12, wherein the aircraft is in flight during thereceiving the initial communication, and wherein the initialcommunication is transmitted from the aircraft to the aircraft interfacecomputing device over a first communications medium, and the datatransmission is transmitted from the aircraft interface computing deviceto the ground computing device over a second communications medium thatis different from the first communications medium.
 14. The method ofclaim 13, wherein the first communications medium is one of a wirelessnetwork, a satellite network, and a cellular network, and the secondcommunications medium is the internet.
 15. The method of claim 1,further comprising: receiving, from the aircraft interface computingdevice and by the ground computing device, one or more identifiersassociated with the aircraft; and determining, based on the one or moreidentifiers, an aircraft classifier associated with at least one of anaircraft service executing on the aircraft computing device, theaircraft computing device, and the aircraft.
 16. The method of claim 15,wherein the one or more identifiers include at least one of: aninternational civil aviation organization (ICAO) code; an internationalair transport association (IATA) code; a tail number; a registrationnumber; a manufacturer number; and a serial number.
 17. The method ofclaim 15, wherein the ground computing device determining the aircraftclassifier comprises the ground computing device accessing a dataconstruct that identifies the aircraft classifier.
 18. The method ofclaim 17, wherein the data construct is a lookup table that storesrelationships between the one or more identifiers and the aircraftclassifier.
 19. The method claim 15, wherein the aircraft classifiercorresponds to one or more of a type of the aircraft, a year of theaircraft, a model of the aircraft, an airline associated with theaircraft, a type of computing device on which the aircraft service isexecuting, a type of service to which the aircraft service corresponds,or a combination thereof.
 20. The method of claim 15, wherein theexchanging the data file corresponds to: receiving, by the groundcomputing device, the data file from the aircraft computing device; andstoring the data file in the central storage location, wherein thecentral storage location segregates stored data according to theaircraft classifier.